promocodeusage_update.go 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510
  1. // Code generated by ent, DO NOT EDIT.
  2. package ent
  3. import (
  4. "context"
  5. "errors"
  6. "fmt"
  7. "time"
  8. "entgo.io/ent/dialect/sql"
  9. "entgo.io/ent/dialect/sql/sqlgraph"
  10. "entgo.io/ent/schema/field"
  11. "github.com/Wei-Shaw/sub2api/ent/predicate"
  12. "github.com/Wei-Shaw/sub2api/ent/promocode"
  13. "github.com/Wei-Shaw/sub2api/ent/promocodeusage"
  14. "github.com/Wei-Shaw/sub2api/ent/user"
  15. )
  16. // PromoCodeUsageUpdate is the builder for updating PromoCodeUsage entities.
  17. type PromoCodeUsageUpdate struct {
  18. config
  19. hooks []Hook
  20. mutation *PromoCodeUsageMutation
  21. }
  22. // Where appends a list predicates to the PromoCodeUsageUpdate builder.
  23. func (_u *PromoCodeUsageUpdate) Where(ps ...predicate.PromoCodeUsage) *PromoCodeUsageUpdate {
  24. _u.mutation.Where(ps...)
  25. return _u
  26. }
  27. // SetPromoCodeID sets the "promo_code_id" field.
  28. func (_u *PromoCodeUsageUpdate) SetPromoCodeID(v int64) *PromoCodeUsageUpdate {
  29. _u.mutation.SetPromoCodeID(v)
  30. return _u
  31. }
  32. // SetNillablePromoCodeID sets the "promo_code_id" field if the given value is not nil.
  33. func (_u *PromoCodeUsageUpdate) SetNillablePromoCodeID(v *int64) *PromoCodeUsageUpdate {
  34. if v != nil {
  35. _u.SetPromoCodeID(*v)
  36. }
  37. return _u
  38. }
  39. // SetUserID sets the "user_id" field.
  40. func (_u *PromoCodeUsageUpdate) SetUserID(v int64) *PromoCodeUsageUpdate {
  41. _u.mutation.SetUserID(v)
  42. return _u
  43. }
  44. // SetNillableUserID sets the "user_id" field if the given value is not nil.
  45. func (_u *PromoCodeUsageUpdate) SetNillableUserID(v *int64) *PromoCodeUsageUpdate {
  46. if v != nil {
  47. _u.SetUserID(*v)
  48. }
  49. return _u
  50. }
  51. // SetBonusAmount sets the "bonus_amount" field.
  52. func (_u *PromoCodeUsageUpdate) SetBonusAmount(v float64) *PromoCodeUsageUpdate {
  53. _u.mutation.ResetBonusAmount()
  54. _u.mutation.SetBonusAmount(v)
  55. return _u
  56. }
  57. // SetNillableBonusAmount sets the "bonus_amount" field if the given value is not nil.
  58. func (_u *PromoCodeUsageUpdate) SetNillableBonusAmount(v *float64) *PromoCodeUsageUpdate {
  59. if v != nil {
  60. _u.SetBonusAmount(*v)
  61. }
  62. return _u
  63. }
  64. // AddBonusAmount adds value to the "bonus_amount" field.
  65. func (_u *PromoCodeUsageUpdate) AddBonusAmount(v float64) *PromoCodeUsageUpdate {
  66. _u.mutation.AddBonusAmount(v)
  67. return _u
  68. }
  69. // SetUsedAt sets the "used_at" field.
  70. func (_u *PromoCodeUsageUpdate) SetUsedAt(v time.Time) *PromoCodeUsageUpdate {
  71. _u.mutation.SetUsedAt(v)
  72. return _u
  73. }
  74. // SetNillableUsedAt sets the "used_at" field if the given value is not nil.
  75. func (_u *PromoCodeUsageUpdate) SetNillableUsedAt(v *time.Time) *PromoCodeUsageUpdate {
  76. if v != nil {
  77. _u.SetUsedAt(*v)
  78. }
  79. return _u
  80. }
  81. // SetPromoCode sets the "promo_code" edge to the PromoCode entity.
  82. func (_u *PromoCodeUsageUpdate) SetPromoCode(v *PromoCode) *PromoCodeUsageUpdate {
  83. return _u.SetPromoCodeID(v.ID)
  84. }
  85. // SetUser sets the "user" edge to the User entity.
  86. func (_u *PromoCodeUsageUpdate) SetUser(v *User) *PromoCodeUsageUpdate {
  87. return _u.SetUserID(v.ID)
  88. }
  89. // Mutation returns the PromoCodeUsageMutation object of the builder.
  90. func (_u *PromoCodeUsageUpdate) Mutation() *PromoCodeUsageMutation {
  91. return _u.mutation
  92. }
  93. // ClearPromoCode clears the "promo_code" edge to the PromoCode entity.
  94. func (_u *PromoCodeUsageUpdate) ClearPromoCode() *PromoCodeUsageUpdate {
  95. _u.mutation.ClearPromoCode()
  96. return _u
  97. }
  98. // ClearUser clears the "user" edge to the User entity.
  99. func (_u *PromoCodeUsageUpdate) ClearUser() *PromoCodeUsageUpdate {
  100. _u.mutation.ClearUser()
  101. return _u
  102. }
  103. // Save executes the query and returns the number of nodes affected by the update operation.
  104. func (_u *PromoCodeUsageUpdate) Save(ctx context.Context) (int, error) {
  105. return withHooks(ctx, _u.sqlSave, _u.mutation, _u.hooks)
  106. }
  107. // SaveX is like Save, but panics if an error occurs.
  108. func (_u *PromoCodeUsageUpdate) SaveX(ctx context.Context) int {
  109. affected, err := _u.Save(ctx)
  110. if err != nil {
  111. panic(err)
  112. }
  113. return affected
  114. }
  115. // Exec executes the query.
  116. func (_u *PromoCodeUsageUpdate) Exec(ctx context.Context) error {
  117. _, err := _u.Save(ctx)
  118. return err
  119. }
  120. // ExecX is like Exec, but panics if an error occurs.
  121. func (_u *PromoCodeUsageUpdate) ExecX(ctx context.Context) {
  122. if err := _u.Exec(ctx); err != nil {
  123. panic(err)
  124. }
  125. }
  126. // check runs all checks and user-defined validators on the builder.
  127. func (_u *PromoCodeUsageUpdate) check() error {
  128. if _u.mutation.PromoCodeCleared() && len(_u.mutation.PromoCodeIDs()) > 0 {
  129. return errors.New(`ent: clearing a required unique edge "PromoCodeUsage.promo_code"`)
  130. }
  131. if _u.mutation.UserCleared() && len(_u.mutation.UserIDs()) > 0 {
  132. return errors.New(`ent: clearing a required unique edge "PromoCodeUsage.user"`)
  133. }
  134. return nil
  135. }
  136. func (_u *PromoCodeUsageUpdate) sqlSave(ctx context.Context) (_node int, err error) {
  137. if err := _u.check(); err != nil {
  138. return _node, err
  139. }
  140. _spec := sqlgraph.NewUpdateSpec(promocodeusage.Table, promocodeusage.Columns, sqlgraph.NewFieldSpec(promocodeusage.FieldID, field.TypeInt64))
  141. if ps := _u.mutation.predicates; len(ps) > 0 {
  142. _spec.Predicate = func(selector *sql.Selector) {
  143. for i := range ps {
  144. ps[i](selector)
  145. }
  146. }
  147. }
  148. if value, ok := _u.mutation.BonusAmount(); ok {
  149. _spec.SetField(promocodeusage.FieldBonusAmount, field.TypeFloat64, value)
  150. }
  151. if value, ok := _u.mutation.AddedBonusAmount(); ok {
  152. _spec.AddField(promocodeusage.FieldBonusAmount, field.TypeFloat64, value)
  153. }
  154. if value, ok := _u.mutation.UsedAt(); ok {
  155. _spec.SetField(promocodeusage.FieldUsedAt, field.TypeTime, value)
  156. }
  157. if _u.mutation.PromoCodeCleared() {
  158. edge := &sqlgraph.EdgeSpec{
  159. Rel: sqlgraph.M2O,
  160. Inverse: true,
  161. Table: promocodeusage.PromoCodeTable,
  162. Columns: []string{promocodeusage.PromoCodeColumn},
  163. Bidi: false,
  164. Target: &sqlgraph.EdgeTarget{
  165. IDSpec: sqlgraph.NewFieldSpec(promocode.FieldID, field.TypeInt64),
  166. },
  167. }
  168. _spec.Edges.Clear = append(_spec.Edges.Clear, edge)
  169. }
  170. if nodes := _u.mutation.PromoCodeIDs(); len(nodes) > 0 {
  171. edge := &sqlgraph.EdgeSpec{
  172. Rel: sqlgraph.M2O,
  173. Inverse: true,
  174. Table: promocodeusage.PromoCodeTable,
  175. Columns: []string{promocodeusage.PromoCodeColumn},
  176. Bidi: false,
  177. Target: &sqlgraph.EdgeTarget{
  178. IDSpec: sqlgraph.NewFieldSpec(promocode.FieldID, field.TypeInt64),
  179. },
  180. }
  181. for _, k := range nodes {
  182. edge.Target.Nodes = append(edge.Target.Nodes, k)
  183. }
  184. _spec.Edges.Add = append(_spec.Edges.Add, edge)
  185. }
  186. if _u.mutation.UserCleared() {
  187. edge := &sqlgraph.EdgeSpec{
  188. Rel: sqlgraph.M2O,
  189. Inverse: true,
  190. Table: promocodeusage.UserTable,
  191. Columns: []string{promocodeusage.UserColumn},
  192. Bidi: false,
  193. Target: &sqlgraph.EdgeTarget{
  194. IDSpec: sqlgraph.NewFieldSpec(user.FieldID, field.TypeInt64),
  195. },
  196. }
  197. _spec.Edges.Clear = append(_spec.Edges.Clear, edge)
  198. }
  199. if nodes := _u.mutation.UserIDs(); len(nodes) > 0 {
  200. edge := &sqlgraph.EdgeSpec{
  201. Rel: sqlgraph.M2O,
  202. Inverse: true,
  203. Table: promocodeusage.UserTable,
  204. Columns: []string{promocodeusage.UserColumn},
  205. Bidi: false,
  206. Target: &sqlgraph.EdgeTarget{
  207. IDSpec: sqlgraph.NewFieldSpec(user.FieldID, field.TypeInt64),
  208. },
  209. }
  210. for _, k := range nodes {
  211. edge.Target.Nodes = append(edge.Target.Nodes, k)
  212. }
  213. _spec.Edges.Add = append(_spec.Edges.Add, edge)
  214. }
  215. if _node, err = sqlgraph.UpdateNodes(ctx, _u.driver, _spec); err != nil {
  216. if _, ok := err.(*sqlgraph.NotFoundError); ok {
  217. err = &NotFoundError{promocodeusage.Label}
  218. } else if sqlgraph.IsConstraintError(err) {
  219. err = &ConstraintError{msg: err.Error(), wrap: err}
  220. }
  221. return 0, err
  222. }
  223. _u.mutation.done = true
  224. return _node, nil
  225. }
  226. // PromoCodeUsageUpdateOne is the builder for updating a single PromoCodeUsage entity.
  227. type PromoCodeUsageUpdateOne struct {
  228. config
  229. fields []string
  230. hooks []Hook
  231. mutation *PromoCodeUsageMutation
  232. }
  233. // SetPromoCodeID sets the "promo_code_id" field.
  234. func (_u *PromoCodeUsageUpdateOne) SetPromoCodeID(v int64) *PromoCodeUsageUpdateOne {
  235. _u.mutation.SetPromoCodeID(v)
  236. return _u
  237. }
  238. // SetNillablePromoCodeID sets the "promo_code_id" field if the given value is not nil.
  239. func (_u *PromoCodeUsageUpdateOne) SetNillablePromoCodeID(v *int64) *PromoCodeUsageUpdateOne {
  240. if v != nil {
  241. _u.SetPromoCodeID(*v)
  242. }
  243. return _u
  244. }
  245. // SetUserID sets the "user_id" field.
  246. func (_u *PromoCodeUsageUpdateOne) SetUserID(v int64) *PromoCodeUsageUpdateOne {
  247. _u.mutation.SetUserID(v)
  248. return _u
  249. }
  250. // SetNillableUserID sets the "user_id" field if the given value is not nil.
  251. func (_u *PromoCodeUsageUpdateOne) SetNillableUserID(v *int64) *PromoCodeUsageUpdateOne {
  252. if v != nil {
  253. _u.SetUserID(*v)
  254. }
  255. return _u
  256. }
  257. // SetBonusAmount sets the "bonus_amount" field.
  258. func (_u *PromoCodeUsageUpdateOne) SetBonusAmount(v float64) *PromoCodeUsageUpdateOne {
  259. _u.mutation.ResetBonusAmount()
  260. _u.mutation.SetBonusAmount(v)
  261. return _u
  262. }
  263. // SetNillableBonusAmount sets the "bonus_amount" field if the given value is not nil.
  264. func (_u *PromoCodeUsageUpdateOne) SetNillableBonusAmount(v *float64) *PromoCodeUsageUpdateOne {
  265. if v != nil {
  266. _u.SetBonusAmount(*v)
  267. }
  268. return _u
  269. }
  270. // AddBonusAmount adds value to the "bonus_amount" field.
  271. func (_u *PromoCodeUsageUpdateOne) AddBonusAmount(v float64) *PromoCodeUsageUpdateOne {
  272. _u.mutation.AddBonusAmount(v)
  273. return _u
  274. }
  275. // SetUsedAt sets the "used_at" field.
  276. func (_u *PromoCodeUsageUpdateOne) SetUsedAt(v time.Time) *PromoCodeUsageUpdateOne {
  277. _u.mutation.SetUsedAt(v)
  278. return _u
  279. }
  280. // SetNillableUsedAt sets the "used_at" field if the given value is not nil.
  281. func (_u *PromoCodeUsageUpdateOne) SetNillableUsedAt(v *time.Time) *PromoCodeUsageUpdateOne {
  282. if v != nil {
  283. _u.SetUsedAt(*v)
  284. }
  285. return _u
  286. }
  287. // SetPromoCode sets the "promo_code" edge to the PromoCode entity.
  288. func (_u *PromoCodeUsageUpdateOne) SetPromoCode(v *PromoCode) *PromoCodeUsageUpdateOne {
  289. return _u.SetPromoCodeID(v.ID)
  290. }
  291. // SetUser sets the "user" edge to the User entity.
  292. func (_u *PromoCodeUsageUpdateOne) SetUser(v *User) *PromoCodeUsageUpdateOne {
  293. return _u.SetUserID(v.ID)
  294. }
  295. // Mutation returns the PromoCodeUsageMutation object of the builder.
  296. func (_u *PromoCodeUsageUpdateOne) Mutation() *PromoCodeUsageMutation {
  297. return _u.mutation
  298. }
  299. // ClearPromoCode clears the "promo_code" edge to the PromoCode entity.
  300. func (_u *PromoCodeUsageUpdateOne) ClearPromoCode() *PromoCodeUsageUpdateOne {
  301. _u.mutation.ClearPromoCode()
  302. return _u
  303. }
  304. // ClearUser clears the "user" edge to the User entity.
  305. func (_u *PromoCodeUsageUpdateOne) ClearUser() *PromoCodeUsageUpdateOne {
  306. _u.mutation.ClearUser()
  307. return _u
  308. }
  309. // Where appends a list predicates to the PromoCodeUsageUpdate builder.
  310. func (_u *PromoCodeUsageUpdateOne) Where(ps ...predicate.PromoCodeUsage) *PromoCodeUsageUpdateOne {
  311. _u.mutation.Where(ps...)
  312. return _u
  313. }
  314. // Select allows selecting one or more fields (columns) of the returned entity.
  315. // The default is selecting all fields defined in the entity schema.
  316. func (_u *PromoCodeUsageUpdateOne) Select(field string, fields ...string) *PromoCodeUsageUpdateOne {
  317. _u.fields = append([]string{field}, fields...)
  318. return _u
  319. }
  320. // Save executes the query and returns the updated PromoCodeUsage entity.
  321. func (_u *PromoCodeUsageUpdateOne) Save(ctx context.Context) (*PromoCodeUsage, error) {
  322. return withHooks(ctx, _u.sqlSave, _u.mutation, _u.hooks)
  323. }
  324. // SaveX is like Save, but panics if an error occurs.
  325. func (_u *PromoCodeUsageUpdateOne) SaveX(ctx context.Context) *PromoCodeUsage {
  326. node, err := _u.Save(ctx)
  327. if err != nil {
  328. panic(err)
  329. }
  330. return node
  331. }
  332. // Exec executes the query on the entity.
  333. func (_u *PromoCodeUsageUpdateOne) Exec(ctx context.Context) error {
  334. _, err := _u.Save(ctx)
  335. return err
  336. }
  337. // ExecX is like Exec, but panics if an error occurs.
  338. func (_u *PromoCodeUsageUpdateOne) ExecX(ctx context.Context) {
  339. if err := _u.Exec(ctx); err != nil {
  340. panic(err)
  341. }
  342. }
  343. // check runs all checks and user-defined validators on the builder.
  344. func (_u *PromoCodeUsageUpdateOne) check() error {
  345. if _u.mutation.PromoCodeCleared() && len(_u.mutation.PromoCodeIDs()) > 0 {
  346. return errors.New(`ent: clearing a required unique edge "PromoCodeUsage.promo_code"`)
  347. }
  348. if _u.mutation.UserCleared() && len(_u.mutation.UserIDs()) > 0 {
  349. return errors.New(`ent: clearing a required unique edge "PromoCodeUsage.user"`)
  350. }
  351. return nil
  352. }
  353. func (_u *PromoCodeUsageUpdateOne) sqlSave(ctx context.Context) (_node *PromoCodeUsage, err error) {
  354. if err := _u.check(); err != nil {
  355. return _node, err
  356. }
  357. _spec := sqlgraph.NewUpdateSpec(promocodeusage.Table, promocodeusage.Columns, sqlgraph.NewFieldSpec(promocodeusage.FieldID, field.TypeInt64))
  358. id, ok := _u.mutation.ID()
  359. if !ok {
  360. return nil, &ValidationError{Name: "id", err: errors.New(`ent: missing "PromoCodeUsage.id" for update`)}
  361. }
  362. _spec.Node.ID.Value = id
  363. if fields := _u.fields; len(fields) > 0 {
  364. _spec.Node.Columns = make([]string, 0, len(fields))
  365. _spec.Node.Columns = append(_spec.Node.Columns, promocodeusage.FieldID)
  366. for _, f := range fields {
  367. if !promocodeusage.ValidColumn(f) {
  368. return nil, &ValidationError{Name: f, err: fmt.Errorf("ent: invalid field %q for query", f)}
  369. }
  370. if f != promocodeusage.FieldID {
  371. _spec.Node.Columns = append(_spec.Node.Columns, f)
  372. }
  373. }
  374. }
  375. if ps := _u.mutation.predicates; len(ps) > 0 {
  376. _spec.Predicate = func(selector *sql.Selector) {
  377. for i := range ps {
  378. ps[i](selector)
  379. }
  380. }
  381. }
  382. if value, ok := _u.mutation.BonusAmount(); ok {
  383. _spec.SetField(promocodeusage.FieldBonusAmount, field.TypeFloat64, value)
  384. }
  385. if value, ok := _u.mutation.AddedBonusAmount(); ok {
  386. _spec.AddField(promocodeusage.FieldBonusAmount, field.TypeFloat64, value)
  387. }
  388. if value, ok := _u.mutation.UsedAt(); ok {
  389. _spec.SetField(promocodeusage.FieldUsedAt, field.TypeTime, value)
  390. }
  391. if _u.mutation.PromoCodeCleared() {
  392. edge := &sqlgraph.EdgeSpec{
  393. Rel: sqlgraph.M2O,
  394. Inverse: true,
  395. Table: promocodeusage.PromoCodeTable,
  396. Columns: []string{promocodeusage.PromoCodeColumn},
  397. Bidi: false,
  398. Target: &sqlgraph.EdgeTarget{
  399. IDSpec: sqlgraph.NewFieldSpec(promocode.FieldID, field.TypeInt64),
  400. },
  401. }
  402. _spec.Edges.Clear = append(_spec.Edges.Clear, edge)
  403. }
  404. if nodes := _u.mutation.PromoCodeIDs(); len(nodes) > 0 {
  405. edge := &sqlgraph.EdgeSpec{
  406. Rel: sqlgraph.M2O,
  407. Inverse: true,
  408. Table: promocodeusage.PromoCodeTable,
  409. Columns: []string{promocodeusage.PromoCodeColumn},
  410. Bidi: false,
  411. Target: &sqlgraph.EdgeTarget{
  412. IDSpec: sqlgraph.NewFieldSpec(promocode.FieldID, field.TypeInt64),
  413. },
  414. }
  415. for _, k := range nodes {
  416. edge.Target.Nodes = append(edge.Target.Nodes, k)
  417. }
  418. _spec.Edges.Add = append(_spec.Edges.Add, edge)
  419. }
  420. if _u.mutation.UserCleared() {
  421. edge := &sqlgraph.EdgeSpec{
  422. Rel: sqlgraph.M2O,
  423. Inverse: true,
  424. Table: promocodeusage.UserTable,
  425. Columns: []string{promocodeusage.UserColumn},
  426. Bidi: false,
  427. Target: &sqlgraph.EdgeTarget{
  428. IDSpec: sqlgraph.NewFieldSpec(user.FieldID, field.TypeInt64),
  429. },
  430. }
  431. _spec.Edges.Clear = append(_spec.Edges.Clear, edge)
  432. }
  433. if nodes := _u.mutation.UserIDs(); len(nodes) > 0 {
  434. edge := &sqlgraph.EdgeSpec{
  435. Rel: sqlgraph.M2O,
  436. Inverse: true,
  437. Table: promocodeusage.UserTable,
  438. Columns: []string{promocodeusage.UserColumn},
  439. Bidi: false,
  440. Target: &sqlgraph.EdgeTarget{
  441. IDSpec: sqlgraph.NewFieldSpec(user.FieldID, field.TypeInt64),
  442. },
  443. }
  444. for _, k := range nodes {
  445. edge.Target.Nodes = append(edge.Target.Nodes, k)
  446. }
  447. _spec.Edges.Add = append(_spec.Edges.Add, edge)
  448. }
  449. _node = &PromoCodeUsage{config: _u.config}
  450. _spec.Assign = _node.assignValues
  451. _spec.ScanValues = _node.scanValues
  452. if err = sqlgraph.UpdateNode(ctx, _u.driver, _spec); err != nil {
  453. if _, ok := err.(*sqlgraph.NotFoundError); ok {
  454. err = &NotFoundError{promocodeusage.Label}
  455. } else if sqlgraph.IsConstraintError(err) {
  456. err = &ConstraintError{msg: err.Error(), wrap: err}
  457. }
  458. return nil, err
  459. }
  460. _u.mutation.done = true
  461. return _node, nil
  462. }