promocode.go 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228
  1. // Code generated by ent, DO NOT EDIT.
  2. package ent
  3. import (
  4. "fmt"
  5. "strings"
  6. "time"
  7. "entgo.io/ent"
  8. "entgo.io/ent/dialect/sql"
  9. "github.com/Wei-Shaw/sub2api/ent/promocode"
  10. )
  11. // PromoCode is the model entity for the PromoCode schema.
  12. type PromoCode struct {
  13. config `json:"-"`
  14. // ID of the ent.
  15. ID int64 `json:"id,omitempty"`
  16. // 优惠码
  17. Code string `json:"code,omitempty"`
  18. // 赠送余额金额
  19. BonusAmount float64 `json:"bonus_amount,omitempty"`
  20. // 最大使用次数,0表示无限制
  21. MaxUses int `json:"max_uses,omitempty"`
  22. // 已使用次数
  23. UsedCount int `json:"used_count,omitempty"`
  24. // 状态: active, disabled
  25. Status string `json:"status,omitempty"`
  26. // 过期时间,null表示永不过期
  27. ExpiresAt *time.Time `json:"expires_at,omitempty"`
  28. // 备注
  29. Notes *string `json:"notes,omitempty"`
  30. // CreatedAt holds the value of the "created_at" field.
  31. CreatedAt time.Time `json:"created_at,omitempty"`
  32. // UpdatedAt holds the value of the "updated_at" field.
  33. UpdatedAt time.Time `json:"updated_at,omitempty"`
  34. // Edges holds the relations/edges for other nodes in the graph.
  35. // The values are being populated by the PromoCodeQuery when eager-loading is set.
  36. Edges PromoCodeEdges `json:"edges"`
  37. selectValues sql.SelectValues
  38. }
  39. // PromoCodeEdges holds the relations/edges for other nodes in the graph.
  40. type PromoCodeEdges struct {
  41. // UsageRecords holds the value of the usage_records edge.
  42. UsageRecords []*PromoCodeUsage `json:"usage_records,omitempty"`
  43. // loadedTypes holds the information for reporting if a
  44. // type was loaded (or requested) in eager-loading or not.
  45. loadedTypes [1]bool
  46. }
  47. // UsageRecordsOrErr returns the UsageRecords value or an error if the edge
  48. // was not loaded in eager-loading.
  49. func (e PromoCodeEdges) UsageRecordsOrErr() ([]*PromoCodeUsage, error) {
  50. if e.loadedTypes[0] {
  51. return e.UsageRecords, nil
  52. }
  53. return nil, &NotLoadedError{edge: "usage_records"}
  54. }
  55. // scanValues returns the types for scanning values from sql.Rows.
  56. func (*PromoCode) scanValues(columns []string) ([]any, error) {
  57. values := make([]any, len(columns))
  58. for i := range columns {
  59. switch columns[i] {
  60. case promocode.FieldBonusAmount:
  61. values[i] = new(sql.NullFloat64)
  62. case promocode.FieldID, promocode.FieldMaxUses, promocode.FieldUsedCount:
  63. values[i] = new(sql.NullInt64)
  64. case promocode.FieldCode, promocode.FieldStatus, promocode.FieldNotes:
  65. values[i] = new(sql.NullString)
  66. case promocode.FieldExpiresAt, promocode.FieldCreatedAt, promocode.FieldUpdatedAt:
  67. values[i] = new(sql.NullTime)
  68. default:
  69. values[i] = new(sql.UnknownType)
  70. }
  71. }
  72. return values, nil
  73. }
  74. // assignValues assigns the values that were returned from sql.Rows (after scanning)
  75. // to the PromoCode fields.
  76. func (_m *PromoCode) assignValues(columns []string, values []any) error {
  77. if m, n := len(values), len(columns); m < n {
  78. return fmt.Errorf("mismatch number of scan values: %d != %d", m, n)
  79. }
  80. for i := range columns {
  81. switch columns[i] {
  82. case promocode.FieldID:
  83. value, ok := values[i].(*sql.NullInt64)
  84. if !ok {
  85. return fmt.Errorf("unexpected type %T for field id", value)
  86. }
  87. _m.ID = int64(value.Int64)
  88. case promocode.FieldCode:
  89. if value, ok := values[i].(*sql.NullString); !ok {
  90. return fmt.Errorf("unexpected type %T for field code", values[i])
  91. } else if value.Valid {
  92. _m.Code = value.String
  93. }
  94. case promocode.FieldBonusAmount:
  95. if value, ok := values[i].(*sql.NullFloat64); !ok {
  96. return fmt.Errorf("unexpected type %T for field bonus_amount", values[i])
  97. } else if value.Valid {
  98. _m.BonusAmount = value.Float64
  99. }
  100. case promocode.FieldMaxUses:
  101. if value, ok := values[i].(*sql.NullInt64); !ok {
  102. return fmt.Errorf("unexpected type %T for field max_uses", values[i])
  103. } else if value.Valid {
  104. _m.MaxUses = int(value.Int64)
  105. }
  106. case promocode.FieldUsedCount:
  107. if value, ok := values[i].(*sql.NullInt64); !ok {
  108. return fmt.Errorf("unexpected type %T for field used_count", values[i])
  109. } else if value.Valid {
  110. _m.UsedCount = int(value.Int64)
  111. }
  112. case promocode.FieldStatus:
  113. if value, ok := values[i].(*sql.NullString); !ok {
  114. return fmt.Errorf("unexpected type %T for field status", values[i])
  115. } else if value.Valid {
  116. _m.Status = value.String
  117. }
  118. case promocode.FieldExpiresAt:
  119. if value, ok := values[i].(*sql.NullTime); !ok {
  120. return fmt.Errorf("unexpected type %T for field expires_at", values[i])
  121. } else if value.Valid {
  122. _m.ExpiresAt = new(time.Time)
  123. *_m.ExpiresAt = value.Time
  124. }
  125. case promocode.FieldNotes:
  126. if value, ok := values[i].(*sql.NullString); !ok {
  127. return fmt.Errorf("unexpected type %T for field notes", values[i])
  128. } else if value.Valid {
  129. _m.Notes = new(string)
  130. *_m.Notes = value.String
  131. }
  132. case promocode.FieldCreatedAt:
  133. if value, ok := values[i].(*sql.NullTime); !ok {
  134. return fmt.Errorf("unexpected type %T for field created_at", values[i])
  135. } else if value.Valid {
  136. _m.CreatedAt = value.Time
  137. }
  138. case promocode.FieldUpdatedAt:
  139. if value, ok := values[i].(*sql.NullTime); !ok {
  140. return fmt.Errorf("unexpected type %T for field updated_at", values[i])
  141. } else if value.Valid {
  142. _m.UpdatedAt = value.Time
  143. }
  144. default:
  145. _m.selectValues.Set(columns[i], values[i])
  146. }
  147. }
  148. return nil
  149. }
  150. // Value returns the ent.Value that was dynamically selected and assigned to the PromoCode.
  151. // This includes values selected through modifiers, order, etc.
  152. func (_m *PromoCode) Value(name string) (ent.Value, error) {
  153. return _m.selectValues.Get(name)
  154. }
  155. // QueryUsageRecords queries the "usage_records" edge of the PromoCode entity.
  156. func (_m *PromoCode) QueryUsageRecords() *PromoCodeUsageQuery {
  157. return NewPromoCodeClient(_m.config).QueryUsageRecords(_m)
  158. }
  159. // Update returns a builder for updating this PromoCode.
  160. // Note that you need to call PromoCode.Unwrap() before calling this method if this PromoCode
  161. // was returned from a transaction, and the transaction was committed or rolled back.
  162. func (_m *PromoCode) Update() *PromoCodeUpdateOne {
  163. return NewPromoCodeClient(_m.config).UpdateOne(_m)
  164. }
  165. // Unwrap unwraps the PromoCode entity that was returned from a transaction after it was closed,
  166. // so that all future queries will be executed through the driver which created the transaction.
  167. func (_m *PromoCode) Unwrap() *PromoCode {
  168. _tx, ok := _m.config.driver.(*txDriver)
  169. if !ok {
  170. panic("ent: PromoCode is not a transactional entity")
  171. }
  172. _m.config.driver = _tx.drv
  173. return _m
  174. }
  175. // String implements the fmt.Stringer.
  176. func (_m *PromoCode) String() string {
  177. var builder strings.Builder
  178. builder.WriteString("PromoCode(")
  179. builder.WriteString(fmt.Sprintf("id=%v, ", _m.ID))
  180. builder.WriteString("code=")
  181. builder.WriteString(_m.Code)
  182. builder.WriteString(", ")
  183. builder.WriteString("bonus_amount=")
  184. builder.WriteString(fmt.Sprintf("%v", _m.BonusAmount))
  185. builder.WriteString(", ")
  186. builder.WriteString("max_uses=")
  187. builder.WriteString(fmt.Sprintf("%v", _m.MaxUses))
  188. builder.WriteString(", ")
  189. builder.WriteString("used_count=")
  190. builder.WriteString(fmt.Sprintf("%v", _m.UsedCount))
  191. builder.WriteString(", ")
  192. builder.WriteString("status=")
  193. builder.WriteString(_m.Status)
  194. builder.WriteString(", ")
  195. if v := _m.ExpiresAt; v != nil {
  196. builder.WriteString("expires_at=")
  197. builder.WriteString(v.Format(time.ANSIC))
  198. }
  199. builder.WriteString(", ")
  200. if v := _m.Notes; v != nil {
  201. builder.WriteString("notes=")
  202. builder.WriteString(*v)
  203. }
  204. builder.WriteString(", ")
  205. builder.WriteString("created_at=")
  206. builder.WriteString(_m.CreatedAt.Format(time.ANSIC))
  207. builder.WriteString(", ")
  208. builder.WriteString("updated_at=")
  209. builder.WriteString(_m.UpdatedAt.Format(time.ANSIC))
  210. builder.WriteByte(')')
  211. return builder.String()
  212. }
  213. // PromoCodes is a parsable slice of PromoCode.
  214. type PromoCodes []*PromoCode