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