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 }