/ ent / user_update.go
user_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/feed"
  16  	"github.com/mrusme/journalist/ent/item"
  17  	"github.com/mrusme/journalist/ent/predicate"
  18  	"github.com/mrusme/journalist/ent/read"
  19  	"github.com/mrusme/journalist/ent/subscription"
  20  	"github.com/mrusme/journalist/ent/token"
  21  	"github.com/mrusme/journalist/ent/user"
  22  )
  23  
  24  // UserUpdate is the builder for updating User entities.
  25  type UserUpdate struct {
  26  	config
  27  	hooks    []Hook
  28  	mutation *UserMutation
  29  }
  30  
  31  // Where appends a list predicates to the UserUpdate builder.
  32  func (uu *UserUpdate) Where(ps ...predicate.User) *UserUpdate {
  33  	uu.mutation.Where(ps...)
  34  	return uu
  35  }
  36  
  37  // SetUsername sets the "username" field.
  38  func (uu *UserUpdate) SetUsername(s string) *UserUpdate {
  39  	uu.mutation.SetUsername(s)
  40  	return uu
  41  }
  42  
  43  // SetNillableUsername sets the "username" field if the given value is not nil.
  44  func (uu *UserUpdate) SetNillableUsername(s *string) *UserUpdate {
  45  	if s != nil {
  46  		uu.SetUsername(*s)
  47  	}
  48  	return uu
  49  }
  50  
  51  // SetPassword sets the "password" field.
  52  func (uu *UserUpdate) SetPassword(s string) *UserUpdate {
  53  	uu.mutation.SetPassword(s)
  54  	return uu
  55  }
  56  
  57  // SetNillablePassword sets the "password" field if the given value is not nil.
  58  func (uu *UserUpdate) SetNillablePassword(s *string) *UserUpdate {
  59  	if s != nil {
  60  		uu.SetPassword(*s)
  61  	}
  62  	return uu
  63  }
  64  
  65  // SetRole sets the "role" field.
  66  func (uu *UserUpdate) SetRole(s string) *UserUpdate {
  67  	uu.mutation.SetRole(s)
  68  	return uu
  69  }
  70  
  71  // SetNillableRole sets the "role" field if the given value is not nil.
  72  func (uu *UserUpdate) SetNillableRole(s *string) *UserUpdate {
  73  	if s != nil {
  74  		uu.SetRole(*s)
  75  	}
  76  	return uu
  77  }
  78  
  79  // SetCreatedAt sets the "created_at" field.
  80  func (uu *UserUpdate) SetCreatedAt(t time.Time) *UserUpdate {
  81  	uu.mutation.SetCreatedAt(t)
  82  	return uu
  83  }
  84  
  85  // SetNillableCreatedAt sets the "created_at" field if the given value is not nil.
  86  func (uu *UserUpdate) SetNillableCreatedAt(t *time.Time) *UserUpdate {
  87  	if t != nil {
  88  		uu.SetCreatedAt(*t)
  89  	}
  90  	return uu
  91  }
  92  
  93  // SetUpdatedAt sets the "updated_at" field.
  94  func (uu *UserUpdate) SetUpdatedAt(t time.Time) *UserUpdate {
  95  	uu.mutation.SetUpdatedAt(t)
  96  	return uu
  97  }
  98  
  99  // SetDeletedAt sets the "deleted_at" field.
 100  func (uu *UserUpdate) SetDeletedAt(t time.Time) *UserUpdate {
 101  	uu.mutation.SetDeletedAt(t)
 102  	return uu
 103  }
 104  
 105  // SetNillableDeletedAt sets the "deleted_at" field if the given value is not nil.
 106  func (uu *UserUpdate) SetNillableDeletedAt(t *time.Time) *UserUpdate {
 107  	if t != nil {
 108  		uu.SetDeletedAt(*t)
 109  	}
 110  	return uu
 111  }
 112  
 113  // ClearDeletedAt clears the value of the "deleted_at" field.
 114  func (uu *UserUpdate) ClearDeletedAt() *UserUpdate {
 115  	uu.mutation.ClearDeletedAt()
 116  	return uu
 117  }
 118  
 119  // AddTokenIDs adds the "tokens" edge to the Token entity by IDs.
 120  func (uu *UserUpdate) AddTokenIDs(ids ...uuid.UUID) *UserUpdate {
 121  	uu.mutation.AddTokenIDs(ids...)
 122  	return uu
 123  }
 124  
 125  // AddTokens adds the "tokens" edges to the Token entity.
 126  func (uu *UserUpdate) AddTokens(t ...*Token) *UserUpdate {
 127  	ids := make([]uuid.UUID, len(t))
 128  	for i := range t {
 129  		ids[i] = t[i].ID
 130  	}
 131  	return uu.AddTokenIDs(ids...)
 132  }
 133  
 134  // AddSubscribedFeedIDs adds the "subscribed_feeds" edge to the Feed entity by IDs.
 135  func (uu *UserUpdate) AddSubscribedFeedIDs(ids ...uuid.UUID) *UserUpdate {
 136  	uu.mutation.AddSubscribedFeedIDs(ids...)
 137  	return uu
 138  }
 139  
 140  // AddSubscribedFeeds adds the "subscribed_feeds" edges to the Feed entity.
 141  func (uu *UserUpdate) AddSubscribedFeeds(f ...*Feed) *UserUpdate {
 142  	ids := make([]uuid.UUID, len(f))
 143  	for i := range f {
 144  		ids[i] = f[i].ID
 145  	}
 146  	return uu.AddSubscribedFeedIDs(ids...)
 147  }
 148  
 149  // AddReadItemIDs adds the "read_items" edge to the Item entity by IDs.
 150  func (uu *UserUpdate) AddReadItemIDs(ids ...uuid.UUID) *UserUpdate {
 151  	uu.mutation.AddReadItemIDs(ids...)
 152  	return uu
 153  }
 154  
 155  // AddReadItems adds the "read_items" edges to the Item entity.
 156  func (uu *UserUpdate) AddReadItems(i ...*Item) *UserUpdate {
 157  	ids := make([]uuid.UUID, len(i))
 158  	for j := range i {
 159  		ids[j] = i[j].ID
 160  	}
 161  	return uu.AddReadItemIDs(ids...)
 162  }
 163  
 164  // AddSubscriptionIDs adds the "subscriptions" edge to the Subscription entity by IDs.
 165  func (uu *UserUpdate) AddSubscriptionIDs(ids ...uuid.UUID) *UserUpdate {
 166  	uu.mutation.AddSubscriptionIDs(ids...)
 167  	return uu
 168  }
 169  
 170  // AddSubscriptions adds the "subscriptions" edges to the Subscription entity.
 171  func (uu *UserUpdate) AddSubscriptions(s ...*Subscription) *UserUpdate {
 172  	ids := make([]uuid.UUID, len(s))
 173  	for i := range s {
 174  		ids[i] = s[i].ID
 175  	}
 176  	return uu.AddSubscriptionIDs(ids...)
 177  }
 178  
 179  // AddReadIDs adds the "reads" edge to the Read entity by IDs.
 180  func (uu *UserUpdate) AddReadIDs(ids ...uuid.UUID) *UserUpdate {
 181  	uu.mutation.AddReadIDs(ids...)
 182  	return uu
 183  }
 184  
 185  // AddReads adds the "reads" edges to the Read entity.
 186  func (uu *UserUpdate) AddReads(r ...*Read) *UserUpdate {
 187  	ids := make([]uuid.UUID, len(r))
 188  	for i := range r {
 189  		ids[i] = r[i].ID
 190  	}
 191  	return uu.AddReadIDs(ids...)
 192  }
 193  
 194  // Mutation returns the UserMutation object of the builder.
 195  func (uu *UserUpdate) Mutation() *UserMutation {
 196  	return uu.mutation
 197  }
 198  
 199  // ClearTokens clears all "tokens" edges to the Token entity.
 200  func (uu *UserUpdate) ClearTokens() *UserUpdate {
 201  	uu.mutation.ClearTokens()
 202  	return uu
 203  }
 204  
 205  // RemoveTokenIDs removes the "tokens" edge to Token entities by IDs.
 206  func (uu *UserUpdate) RemoveTokenIDs(ids ...uuid.UUID) *UserUpdate {
 207  	uu.mutation.RemoveTokenIDs(ids...)
 208  	return uu
 209  }
 210  
 211  // RemoveTokens removes "tokens" edges to Token entities.
 212  func (uu *UserUpdate) RemoveTokens(t ...*Token) *UserUpdate {
 213  	ids := make([]uuid.UUID, len(t))
 214  	for i := range t {
 215  		ids[i] = t[i].ID
 216  	}
 217  	return uu.RemoveTokenIDs(ids...)
 218  }
 219  
 220  // ClearSubscribedFeeds clears all "subscribed_feeds" edges to the Feed entity.
 221  func (uu *UserUpdate) ClearSubscribedFeeds() *UserUpdate {
 222  	uu.mutation.ClearSubscribedFeeds()
 223  	return uu
 224  }
 225  
 226  // RemoveSubscribedFeedIDs removes the "subscribed_feeds" edge to Feed entities by IDs.
 227  func (uu *UserUpdate) RemoveSubscribedFeedIDs(ids ...uuid.UUID) *UserUpdate {
 228  	uu.mutation.RemoveSubscribedFeedIDs(ids...)
 229  	return uu
 230  }
 231  
 232  // RemoveSubscribedFeeds removes "subscribed_feeds" edges to Feed entities.
 233  func (uu *UserUpdate) RemoveSubscribedFeeds(f ...*Feed) *UserUpdate {
 234  	ids := make([]uuid.UUID, len(f))
 235  	for i := range f {
 236  		ids[i] = f[i].ID
 237  	}
 238  	return uu.RemoveSubscribedFeedIDs(ids...)
 239  }
 240  
 241  // ClearReadItems clears all "read_items" edges to the Item entity.
 242  func (uu *UserUpdate) ClearReadItems() *UserUpdate {
 243  	uu.mutation.ClearReadItems()
 244  	return uu
 245  }
 246  
 247  // RemoveReadItemIDs removes the "read_items" edge to Item entities by IDs.
 248  func (uu *UserUpdate) RemoveReadItemIDs(ids ...uuid.UUID) *UserUpdate {
 249  	uu.mutation.RemoveReadItemIDs(ids...)
 250  	return uu
 251  }
 252  
 253  // RemoveReadItems removes "read_items" edges to Item entities.
 254  func (uu *UserUpdate) RemoveReadItems(i ...*Item) *UserUpdate {
 255  	ids := make([]uuid.UUID, len(i))
 256  	for j := range i {
 257  		ids[j] = i[j].ID
 258  	}
 259  	return uu.RemoveReadItemIDs(ids...)
 260  }
 261  
 262  // ClearSubscriptions clears all "subscriptions" edges to the Subscription entity.
 263  func (uu *UserUpdate) ClearSubscriptions() *UserUpdate {
 264  	uu.mutation.ClearSubscriptions()
 265  	return uu
 266  }
 267  
 268  // RemoveSubscriptionIDs removes the "subscriptions" edge to Subscription entities by IDs.
 269  func (uu *UserUpdate) RemoveSubscriptionIDs(ids ...uuid.UUID) *UserUpdate {
 270  	uu.mutation.RemoveSubscriptionIDs(ids...)
 271  	return uu
 272  }
 273  
 274  // RemoveSubscriptions removes "subscriptions" edges to Subscription entities.
 275  func (uu *UserUpdate) RemoveSubscriptions(s ...*Subscription) *UserUpdate {
 276  	ids := make([]uuid.UUID, len(s))
 277  	for i := range s {
 278  		ids[i] = s[i].ID
 279  	}
 280  	return uu.RemoveSubscriptionIDs(ids...)
 281  }
 282  
 283  // ClearReads clears all "reads" edges to the Read entity.
 284  func (uu *UserUpdate) ClearReads() *UserUpdate {
 285  	uu.mutation.ClearReads()
 286  	return uu
 287  }
 288  
 289  // RemoveReadIDs removes the "reads" edge to Read entities by IDs.
 290  func (uu *UserUpdate) RemoveReadIDs(ids ...uuid.UUID) *UserUpdate {
 291  	uu.mutation.RemoveReadIDs(ids...)
 292  	return uu
 293  }
 294  
 295  // RemoveReads removes "reads" edges to Read entities.
 296  func (uu *UserUpdate) RemoveReads(r ...*Read) *UserUpdate {
 297  	ids := make([]uuid.UUID, len(r))
 298  	for i := range r {
 299  		ids[i] = r[i].ID
 300  	}
 301  	return uu.RemoveReadIDs(ids...)
 302  }
 303  
 304  // Save executes the query and returns the number of nodes affected by the update operation.
 305  func (uu *UserUpdate) Save(ctx context.Context) (int, error) {
 306  	uu.defaults()
 307  	return withHooks(ctx, uu.sqlSave, uu.mutation, uu.hooks)
 308  }
 309  
 310  // SaveX is like Save, but panics if an error occurs.
 311  func (uu *UserUpdate) SaveX(ctx context.Context) int {
 312  	affected, err := uu.Save(ctx)
 313  	if err != nil {
 314  		panic(err)
 315  	}
 316  	return affected
 317  }
 318  
 319  // Exec executes the query.
 320  func (uu *UserUpdate) Exec(ctx context.Context) error {
 321  	_, err := uu.Save(ctx)
 322  	return err
 323  }
 324  
 325  // ExecX is like Exec, but panics if an error occurs.
 326  func (uu *UserUpdate) ExecX(ctx context.Context) {
 327  	if err := uu.Exec(ctx); err != nil {
 328  		panic(err)
 329  	}
 330  }
 331  
 332  // defaults sets the default values of the builder before save.
 333  func (uu *UserUpdate) defaults() {
 334  	if _, ok := uu.mutation.UpdatedAt(); !ok {
 335  		v := user.UpdateDefaultUpdatedAt()
 336  		uu.mutation.SetUpdatedAt(v)
 337  	}
 338  }
 339  
 340  // check runs all checks and user-defined validators on the builder.
 341  func (uu *UserUpdate) check() error {
 342  	if v, ok := uu.mutation.Username(); ok {
 343  		if err := user.UsernameValidator(v); err != nil {
 344  			return &ValidationError{Name: "username", err: fmt.Errorf(`ent: validator failed for field "User.username": %w`, err)}
 345  		}
 346  	}
 347  	if v, ok := uu.mutation.Password(); ok {
 348  		if err := user.PasswordValidator(v); err != nil {
 349  			return &ValidationError{Name: "password", err: fmt.Errorf(`ent: validator failed for field "User.password": %w`, err)}
 350  		}
 351  	}
 352  	if v, ok := uu.mutation.Role(); ok {
 353  		if err := user.RoleValidator(v); err != nil {
 354  			return &ValidationError{Name: "role", err: fmt.Errorf(`ent: validator failed for field "User.role": %w`, err)}
 355  		}
 356  	}
 357  	return nil
 358  }
 359  
 360  func (uu *UserUpdate) sqlSave(ctx context.Context) (n int, err error) {
 361  	if err := uu.check(); err != nil {
 362  		return n, err
 363  	}
 364  	_spec := sqlgraph.NewUpdateSpec(user.Table, user.Columns, sqlgraph.NewFieldSpec(user.FieldID, field.TypeUUID))
 365  	if ps := uu.mutation.predicates; len(ps) > 0 {
 366  		_spec.Predicate = func(selector *sql.Selector) {
 367  			for i := range ps {
 368  				ps[i](selector)
 369  			}
 370  		}
 371  	}
 372  	if value, ok := uu.mutation.Username(); ok {
 373  		_spec.SetField(user.FieldUsername, field.TypeString, value)
 374  	}
 375  	if value, ok := uu.mutation.Password(); ok {
 376  		_spec.SetField(user.FieldPassword, field.TypeString, value)
 377  	}
 378  	if value, ok := uu.mutation.Role(); ok {
 379  		_spec.SetField(user.FieldRole, field.TypeString, value)
 380  	}
 381  	if value, ok := uu.mutation.CreatedAt(); ok {
 382  		_spec.SetField(user.FieldCreatedAt, field.TypeTime, value)
 383  	}
 384  	if value, ok := uu.mutation.UpdatedAt(); ok {
 385  		_spec.SetField(user.FieldUpdatedAt, field.TypeTime, value)
 386  	}
 387  	if value, ok := uu.mutation.DeletedAt(); ok {
 388  		_spec.SetField(user.FieldDeletedAt, field.TypeTime, value)
 389  	}
 390  	if uu.mutation.DeletedAtCleared() {
 391  		_spec.ClearField(user.FieldDeletedAt, field.TypeTime)
 392  	}
 393  	if uu.mutation.TokensCleared() {
 394  		edge := &sqlgraph.EdgeSpec{
 395  			Rel:     sqlgraph.O2M,
 396  			Inverse: false,
 397  			Table:   user.TokensTable,
 398  			Columns: []string{user.TokensColumn},
 399  			Bidi:    false,
 400  			Target: &sqlgraph.EdgeTarget{
 401  				IDSpec: sqlgraph.NewFieldSpec(token.FieldID, field.TypeUUID),
 402  			},
 403  		}
 404  		_spec.Edges.Clear = append(_spec.Edges.Clear, edge)
 405  	}
 406  	if nodes := uu.mutation.RemovedTokensIDs(); len(nodes) > 0 && !uu.mutation.TokensCleared() {
 407  		edge := &sqlgraph.EdgeSpec{
 408  			Rel:     sqlgraph.O2M,
 409  			Inverse: false,
 410  			Table:   user.TokensTable,
 411  			Columns: []string{user.TokensColumn},
 412  			Bidi:    false,
 413  			Target: &sqlgraph.EdgeTarget{
 414  				IDSpec: sqlgraph.NewFieldSpec(token.FieldID, field.TypeUUID),
 415  			},
 416  		}
 417  		for _, k := range nodes {
 418  			edge.Target.Nodes = append(edge.Target.Nodes, k)
 419  		}
 420  		_spec.Edges.Clear = append(_spec.Edges.Clear, edge)
 421  	}
 422  	if nodes := uu.mutation.TokensIDs(); len(nodes) > 0 {
 423  		edge := &sqlgraph.EdgeSpec{
 424  			Rel:     sqlgraph.O2M,
 425  			Inverse: false,
 426  			Table:   user.TokensTable,
 427  			Columns: []string{user.TokensColumn},
 428  			Bidi:    false,
 429  			Target: &sqlgraph.EdgeTarget{
 430  				IDSpec: sqlgraph.NewFieldSpec(token.FieldID, field.TypeUUID),
 431  			},
 432  		}
 433  		for _, k := range nodes {
 434  			edge.Target.Nodes = append(edge.Target.Nodes, k)
 435  		}
 436  		_spec.Edges.Add = append(_spec.Edges.Add, edge)
 437  	}
 438  	if uu.mutation.SubscribedFeedsCleared() {
 439  		edge := &sqlgraph.EdgeSpec{
 440  			Rel:     sqlgraph.M2M,
 441  			Inverse: false,
 442  			Table:   user.SubscribedFeedsTable,
 443  			Columns: user.SubscribedFeedsPrimaryKey,
 444  			Bidi:    false,
 445  			Target: &sqlgraph.EdgeTarget{
 446  				IDSpec: sqlgraph.NewFieldSpec(feed.FieldID, field.TypeUUID),
 447  			},
 448  		}
 449  		createE := &SubscriptionCreate{config: uu.config, mutation: newSubscriptionMutation(uu.config, OpCreate)}
 450  		createE.defaults()
 451  		_, specE := createE.createSpec()
 452  		edge.Target.Fields = specE.Fields
 453  		if specE.ID.Value != nil {
 454  			edge.Target.Fields = append(edge.Target.Fields, specE.ID)
 455  		}
 456  		_spec.Edges.Clear = append(_spec.Edges.Clear, edge)
 457  	}
 458  	if nodes := uu.mutation.RemovedSubscribedFeedsIDs(); len(nodes) > 0 && !uu.mutation.SubscribedFeedsCleared() {
 459  		edge := &sqlgraph.EdgeSpec{
 460  			Rel:     sqlgraph.M2M,
 461  			Inverse: false,
 462  			Table:   user.SubscribedFeedsTable,
 463  			Columns: user.SubscribedFeedsPrimaryKey,
 464  			Bidi:    false,
 465  			Target: &sqlgraph.EdgeTarget{
 466  				IDSpec: sqlgraph.NewFieldSpec(feed.FieldID, field.TypeUUID),
 467  			},
 468  		}
 469  		for _, k := range nodes {
 470  			edge.Target.Nodes = append(edge.Target.Nodes, k)
 471  		}
 472  		createE := &SubscriptionCreate{config: uu.config, mutation: newSubscriptionMutation(uu.config, OpCreate)}
 473  		createE.defaults()
 474  		_, specE := createE.createSpec()
 475  		edge.Target.Fields = specE.Fields
 476  		if specE.ID.Value != nil {
 477  			edge.Target.Fields = append(edge.Target.Fields, specE.ID)
 478  		}
 479  		_spec.Edges.Clear = append(_spec.Edges.Clear, edge)
 480  	}
 481  	if nodes := uu.mutation.SubscribedFeedsIDs(); len(nodes) > 0 {
 482  		edge := &sqlgraph.EdgeSpec{
 483  			Rel:     sqlgraph.M2M,
 484  			Inverse: false,
 485  			Table:   user.SubscribedFeedsTable,
 486  			Columns: user.SubscribedFeedsPrimaryKey,
 487  			Bidi:    false,
 488  			Target: &sqlgraph.EdgeTarget{
 489  				IDSpec: sqlgraph.NewFieldSpec(feed.FieldID, field.TypeUUID),
 490  			},
 491  		}
 492  		for _, k := range nodes {
 493  			edge.Target.Nodes = append(edge.Target.Nodes, k)
 494  		}
 495  		createE := &SubscriptionCreate{config: uu.config, mutation: newSubscriptionMutation(uu.config, OpCreate)}
 496  		createE.defaults()
 497  		_, specE := createE.createSpec()
 498  		edge.Target.Fields = specE.Fields
 499  		if specE.ID.Value != nil {
 500  			edge.Target.Fields = append(edge.Target.Fields, specE.ID)
 501  		}
 502  		_spec.Edges.Add = append(_spec.Edges.Add, edge)
 503  	}
 504  	if uu.mutation.ReadItemsCleared() {
 505  		edge := &sqlgraph.EdgeSpec{
 506  			Rel:     sqlgraph.M2M,
 507  			Inverse: false,
 508  			Table:   user.ReadItemsTable,
 509  			Columns: user.ReadItemsPrimaryKey,
 510  			Bidi:    false,
 511  			Target: &sqlgraph.EdgeTarget{
 512  				IDSpec: sqlgraph.NewFieldSpec(item.FieldID, field.TypeUUID),
 513  			},
 514  		}
 515  		createE := &ReadCreate{config: uu.config, mutation: newReadMutation(uu.config, OpCreate)}
 516  		createE.defaults()
 517  		_, specE := createE.createSpec()
 518  		edge.Target.Fields = specE.Fields
 519  		if specE.ID.Value != nil {
 520  			edge.Target.Fields = append(edge.Target.Fields, specE.ID)
 521  		}
 522  		_spec.Edges.Clear = append(_spec.Edges.Clear, edge)
 523  	}
 524  	if nodes := uu.mutation.RemovedReadItemsIDs(); len(nodes) > 0 && !uu.mutation.ReadItemsCleared() {
 525  		edge := &sqlgraph.EdgeSpec{
 526  			Rel:     sqlgraph.M2M,
 527  			Inverse: false,
 528  			Table:   user.ReadItemsTable,
 529  			Columns: user.ReadItemsPrimaryKey,
 530  			Bidi:    false,
 531  			Target: &sqlgraph.EdgeTarget{
 532  				IDSpec: sqlgraph.NewFieldSpec(item.FieldID, field.TypeUUID),
 533  			},
 534  		}
 535  		for _, k := range nodes {
 536  			edge.Target.Nodes = append(edge.Target.Nodes, k)
 537  		}
 538  		createE := &ReadCreate{config: uu.config, mutation: newReadMutation(uu.config, OpCreate)}
 539  		createE.defaults()
 540  		_, specE := createE.createSpec()
 541  		edge.Target.Fields = specE.Fields
 542  		if specE.ID.Value != nil {
 543  			edge.Target.Fields = append(edge.Target.Fields, specE.ID)
 544  		}
 545  		_spec.Edges.Clear = append(_spec.Edges.Clear, edge)
 546  	}
 547  	if nodes := uu.mutation.ReadItemsIDs(); len(nodes) > 0 {
 548  		edge := &sqlgraph.EdgeSpec{
 549  			Rel:     sqlgraph.M2M,
 550  			Inverse: false,
 551  			Table:   user.ReadItemsTable,
 552  			Columns: user.ReadItemsPrimaryKey,
 553  			Bidi:    false,
 554  			Target: &sqlgraph.EdgeTarget{
 555  				IDSpec: sqlgraph.NewFieldSpec(item.FieldID, field.TypeUUID),
 556  			},
 557  		}
 558  		for _, k := range nodes {
 559  			edge.Target.Nodes = append(edge.Target.Nodes, k)
 560  		}
 561  		createE := &ReadCreate{config: uu.config, mutation: newReadMutation(uu.config, OpCreate)}
 562  		createE.defaults()
 563  		_, specE := createE.createSpec()
 564  		edge.Target.Fields = specE.Fields
 565  		if specE.ID.Value != nil {
 566  			edge.Target.Fields = append(edge.Target.Fields, specE.ID)
 567  		}
 568  		_spec.Edges.Add = append(_spec.Edges.Add, edge)
 569  	}
 570  	if uu.mutation.SubscriptionsCleared() {
 571  		edge := &sqlgraph.EdgeSpec{
 572  			Rel:     sqlgraph.O2M,
 573  			Inverse: true,
 574  			Table:   user.SubscriptionsTable,
 575  			Columns: []string{user.SubscriptionsColumn},
 576  			Bidi:    false,
 577  			Target: &sqlgraph.EdgeTarget{
 578  				IDSpec: sqlgraph.NewFieldSpec(subscription.FieldID, field.TypeUUID),
 579  			},
 580  		}
 581  		_spec.Edges.Clear = append(_spec.Edges.Clear, edge)
 582  	}
 583  	if nodes := uu.mutation.RemovedSubscriptionsIDs(); len(nodes) > 0 && !uu.mutation.SubscriptionsCleared() {
 584  		edge := &sqlgraph.EdgeSpec{
 585  			Rel:     sqlgraph.O2M,
 586  			Inverse: true,
 587  			Table:   user.SubscriptionsTable,
 588  			Columns: []string{user.SubscriptionsColumn},
 589  			Bidi:    false,
 590  			Target: &sqlgraph.EdgeTarget{
 591  				IDSpec: sqlgraph.NewFieldSpec(subscription.FieldID, field.TypeUUID),
 592  			},
 593  		}
 594  		for _, k := range nodes {
 595  			edge.Target.Nodes = append(edge.Target.Nodes, k)
 596  		}
 597  		_spec.Edges.Clear = append(_spec.Edges.Clear, edge)
 598  	}
 599  	if nodes := uu.mutation.SubscriptionsIDs(); len(nodes) > 0 {
 600  		edge := &sqlgraph.EdgeSpec{
 601  			Rel:     sqlgraph.O2M,
 602  			Inverse: true,
 603  			Table:   user.SubscriptionsTable,
 604  			Columns: []string{user.SubscriptionsColumn},
 605  			Bidi:    false,
 606  			Target: &sqlgraph.EdgeTarget{
 607  				IDSpec: sqlgraph.NewFieldSpec(subscription.FieldID, field.TypeUUID),
 608  			},
 609  		}
 610  		for _, k := range nodes {
 611  			edge.Target.Nodes = append(edge.Target.Nodes, k)
 612  		}
 613  		_spec.Edges.Add = append(_spec.Edges.Add, edge)
 614  	}
 615  	if uu.mutation.ReadsCleared() {
 616  		edge := &sqlgraph.EdgeSpec{
 617  			Rel:     sqlgraph.O2M,
 618  			Inverse: true,
 619  			Table:   user.ReadsTable,
 620  			Columns: []string{user.ReadsColumn},
 621  			Bidi:    false,
 622  			Target: &sqlgraph.EdgeTarget{
 623  				IDSpec: sqlgraph.NewFieldSpec(read.FieldID, field.TypeUUID),
 624  			},
 625  		}
 626  		_spec.Edges.Clear = append(_spec.Edges.Clear, edge)
 627  	}
 628  	if nodes := uu.mutation.RemovedReadsIDs(); len(nodes) > 0 && !uu.mutation.ReadsCleared() {
 629  		edge := &sqlgraph.EdgeSpec{
 630  			Rel:     sqlgraph.O2M,
 631  			Inverse: true,
 632  			Table:   user.ReadsTable,
 633  			Columns: []string{user.ReadsColumn},
 634  			Bidi:    false,
 635  			Target: &sqlgraph.EdgeTarget{
 636  				IDSpec: sqlgraph.NewFieldSpec(read.FieldID, field.TypeUUID),
 637  			},
 638  		}
 639  		for _, k := range nodes {
 640  			edge.Target.Nodes = append(edge.Target.Nodes, k)
 641  		}
 642  		_spec.Edges.Clear = append(_spec.Edges.Clear, edge)
 643  	}
 644  	if nodes := uu.mutation.ReadsIDs(); len(nodes) > 0 {
 645  		edge := &sqlgraph.EdgeSpec{
 646  			Rel:     sqlgraph.O2M,
 647  			Inverse: true,
 648  			Table:   user.ReadsTable,
 649  			Columns: []string{user.ReadsColumn},
 650  			Bidi:    false,
 651  			Target: &sqlgraph.EdgeTarget{
 652  				IDSpec: sqlgraph.NewFieldSpec(read.FieldID, field.TypeUUID),
 653  			},
 654  		}
 655  		for _, k := range nodes {
 656  			edge.Target.Nodes = append(edge.Target.Nodes, k)
 657  		}
 658  		_spec.Edges.Add = append(_spec.Edges.Add, edge)
 659  	}
 660  	if n, err = sqlgraph.UpdateNodes(ctx, uu.driver, _spec); err != nil {
 661  		if _, ok := err.(*sqlgraph.NotFoundError); ok {
 662  			err = &NotFoundError{user.Label}
 663  		} else if sqlgraph.IsConstraintError(err) {
 664  			err = &ConstraintError{msg: err.Error(), wrap: err}
 665  		}
 666  		return 0, err
 667  	}
 668  	uu.mutation.done = true
 669  	return n, nil
 670  }
 671  
 672  // UserUpdateOne is the builder for updating a single User entity.
 673  type UserUpdateOne struct {
 674  	config
 675  	fields   []string
 676  	hooks    []Hook
 677  	mutation *UserMutation
 678  }
 679  
 680  // SetUsername sets the "username" field.
 681  func (uuo *UserUpdateOne) SetUsername(s string) *UserUpdateOne {
 682  	uuo.mutation.SetUsername(s)
 683  	return uuo
 684  }
 685  
 686  // SetNillableUsername sets the "username" field if the given value is not nil.
 687  func (uuo *UserUpdateOne) SetNillableUsername(s *string) *UserUpdateOne {
 688  	if s != nil {
 689  		uuo.SetUsername(*s)
 690  	}
 691  	return uuo
 692  }
 693  
 694  // SetPassword sets the "password" field.
 695  func (uuo *UserUpdateOne) SetPassword(s string) *UserUpdateOne {
 696  	uuo.mutation.SetPassword(s)
 697  	return uuo
 698  }
 699  
 700  // SetNillablePassword sets the "password" field if the given value is not nil.
 701  func (uuo *UserUpdateOne) SetNillablePassword(s *string) *UserUpdateOne {
 702  	if s != nil {
 703  		uuo.SetPassword(*s)
 704  	}
 705  	return uuo
 706  }
 707  
 708  // SetRole sets the "role" field.
 709  func (uuo *UserUpdateOne) SetRole(s string) *UserUpdateOne {
 710  	uuo.mutation.SetRole(s)
 711  	return uuo
 712  }
 713  
 714  // SetNillableRole sets the "role" field if the given value is not nil.
 715  func (uuo *UserUpdateOne) SetNillableRole(s *string) *UserUpdateOne {
 716  	if s != nil {
 717  		uuo.SetRole(*s)
 718  	}
 719  	return uuo
 720  }
 721  
 722  // SetCreatedAt sets the "created_at" field.
 723  func (uuo *UserUpdateOne) SetCreatedAt(t time.Time) *UserUpdateOne {
 724  	uuo.mutation.SetCreatedAt(t)
 725  	return uuo
 726  }
 727  
 728  // SetNillableCreatedAt sets the "created_at" field if the given value is not nil.
 729  func (uuo *UserUpdateOne) SetNillableCreatedAt(t *time.Time) *UserUpdateOne {
 730  	if t != nil {
 731  		uuo.SetCreatedAt(*t)
 732  	}
 733  	return uuo
 734  }
 735  
 736  // SetUpdatedAt sets the "updated_at" field.
 737  func (uuo *UserUpdateOne) SetUpdatedAt(t time.Time) *UserUpdateOne {
 738  	uuo.mutation.SetUpdatedAt(t)
 739  	return uuo
 740  }
 741  
 742  // SetDeletedAt sets the "deleted_at" field.
 743  func (uuo *UserUpdateOne) SetDeletedAt(t time.Time) *UserUpdateOne {
 744  	uuo.mutation.SetDeletedAt(t)
 745  	return uuo
 746  }
 747  
 748  // SetNillableDeletedAt sets the "deleted_at" field if the given value is not nil.
 749  func (uuo *UserUpdateOne) SetNillableDeletedAt(t *time.Time) *UserUpdateOne {
 750  	if t != nil {
 751  		uuo.SetDeletedAt(*t)
 752  	}
 753  	return uuo
 754  }
 755  
 756  // ClearDeletedAt clears the value of the "deleted_at" field.
 757  func (uuo *UserUpdateOne) ClearDeletedAt() *UserUpdateOne {
 758  	uuo.mutation.ClearDeletedAt()
 759  	return uuo
 760  }
 761  
 762  // AddTokenIDs adds the "tokens" edge to the Token entity by IDs.
 763  func (uuo *UserUpdateOne) AddTokenIDs(ids ...uuid.UUID) *UserUpdateOne {
 764  	uuo.mutation.AddTokenIDs(ids...)
 765  	return uuo
 766  }
 767  
 768  // AddTokens adds the "tokens" edges to the Token entity.
 769  func (uuo *UserUpdateOne) AddTokens(t ...*Token) *UserUpdateOne {
 770  	ids := make([]uuid.UUID, len(t))
 771  	for i := range t {
 772  		ids[i] = t[i].ID
 773  	}
 774  	return uuo.AddTokenIDs(ids...)
 775  }
 776  
 777  // AddSubscribedFeedIDs adds the "subscribed_feeds" edge to the Feed entity by IDs.
 778  func (uuo *UserUpdateOne) AddSubscribedFeedIDs(ids ...uuid.UUID) *UserUpdateOne {
 779  	uuo.mutation.AddSubscribedFeedIDs(ids...)
 780  	return uuo
 781  }
 782  
 783  // AddSubscribedFeeds adds the "subscribed_feeds" edges to the Feed entity.
 784  func (uuo *UserUpdateOne) AddSubscribedFeeds(f ...*Feed) *UserUpdateOne {
 785  	ids := make([]uuid.UUID, len(f))
 786  	for i := range f {
 787  		ids[i] = f[i].ID
 788  	}
 789  	return uuo.AddSubscribedFeedIDs(ids...)
 790  }
 791  
 792  // AddReadItemIDs adds the "read_items" edge to the Item entity by IDs.
 793  func (uuo *UserUpdateOne) AddReadItemIDs(ids ...uuid.UUID) *UserUpdateOne {
 794  	uuo.mutation.AddReadItemIDs(ids...)
 795  	return uuo
 796  }
 797  
 798  // AddReadItems adds the "read_items" edges to the Item entity.
 799  func (uuo *UserUpdateOne) AddReadItems(i ...*Item) *UserUpdateOne {
 800  	ids := make([]uuid.UUID, len(i))
 801  	for j := range i {
 802  		ids[j] = i[j].ID
 803  	}
 804  	return uuo.AddReadItemIDs(ids...)
 805  }
 806  
 807  // AddSubscriptionIDs adds the "subscriptions" edge to the Subscription entity by IDs.
 808  func (uuo *UserUpdateOne) AddSubscriptionIDs(ids ...uuid.UUID) *UserUpdateOne {
 809  	uuo.mutation.AddSubscriptionIDs(ids...)
 810  	return uuo
 811  }
 812  
 813  // AddSubscriptions adds the "subscriptions" edges to the Subscription entity.
 814  func (uuo *UserUpdateOne) AddSubscriptions(s ...*Subscription) *UserUpdateOne {
 815  	ids := make([]uuid.UUID, len(s))
 816  	for i := range s {
 817  		ids[i] = s[i].ID
 818  	}
 819  	return uuo.AddSubscriptionIDs(ids...)
 820  }
 821  
 822  // AddReadIDs adds the "reads" edge to the Read entity by IDs.
 823  func (uuo *UserUpdateOne) AddReadIDs(ids ...uuid.UUID) *UserUpdateOne {
 824  	uuo.mutation.AddReadIDs(ids...)
 825  	return uuo
 826  }
 827  
 828  // AddReads adds the "reads" edges to the Read entity.
 829  func (uuo *UserUpdateOne) AddReads(r ...*Read) *UserUpdateOne {
 830  	ids := make([]uuid.UUID, len(r))
 831  	for i := range r {
 832  		ids[i] = r[i].ID
 833  	}
 834  	return uuo.AddReadIDs(ids...)
 835  }
 836  
 837  // Mutation returns the UserMutation object of the builder.
 838  func (uuo *UserUpdateOne) Mutation() *UserMutation {
 839  	return uuo.mutation
 840  }
 841  
 842  // ClearTokens clears all "tokens" edges to the Token entity.
 843  func (uuo *UserUpdateOne) ClearTokens() *UserUpdateOne {
 844  	uuo.mutation.ClearTokens()
 845  	return uuo
 846  }
 847  
 848  // RemoveTokenIDs removes the "tokens" edge to Token entities by IDs.
 849  func (uuo *UserUpdateOne) RemoveTokenIDs(ids ...uuid.UUID) *UserUpdateOne {
 850  	uuo.mutation.RemoveTokenIDs(ids...)
 851  	return uuo
 852  }
 853  
 854  // RemoveTokens removes "tokens" edges to Token entities.
 855  func (uuo *UserUpdateOne) RemoveTokens(t ...*Token) *UserUpdateOne {
 856  	ids := make([]uuid.UUID, len(t))
 857  	for i := range t {
 858  		ids[i] = t[i].ID
 859  	}
 860  	return uuo.RemoveTokenIDs(ids...)
 861  }
 862  
 863  // ClearSubscribedFeeds clears all "subscribed_feeds" edges to the Feed entity.
 864  func (uuo *UserUpdateOne) ClearSubscribedFeeds() *UserUpdateOne {
 865  	uuo.mutation.ClearSubscribedFeeds()
 866  	return uuo
 867  }
 868  
 869  // RemoveSubscribedFeedIDs removes the "subscribed_feeds" edge to Feed entities by IDs.
 870  func (uuo *UserUpdateOne) RemoveSubscribedFeedIDs(ids ...uuid.UUID) *UserUpdateOne {
 871  	uuo.mutation.RemoveSubscribedFeedIDs(ids...)
 872  	return uuo
 873  }
 874  
 875  // RemoveSubscribedFeeds removes "subscribed_feeds" edges to Feed entities.
 876  func (uuo *UserUpdateOne) RemoveSubscribedFeeds(f ...*Feed) *UserUpdateOne {
 877  	ids := make([]uuid.UUID, len(f))
 878  	for i := range f {
 879  		ids[i] = f[i].ID
 880  	}
 881  	return uuo.RemoveSubscribedFeedIDs(ids...)
 882  }
 883  
 884  // ClearReadItems clears all "read_items" edges to the Item entity.
 885  func (uuo *UserUpdateOne) ClearReadItems() *UserUpdateOne {
 886  	uuo.mutation.ClearReadItems()
 887  	return uuo
 888  }
 889  
 890  // RemoveReadItemIDs removes the "read_items" edge to Item entities by IDs.
 891  func (uuo *UserUpdateOne) RemoveReadItemIDs(ids ...uuid.UUID) *UserUpdateOne {
 892  	uuo.mutation.RemoveReadItemIDs(ids...)
 893  	return uuo
 894  }
 895  
 896  // RemoveReadItems removes "read_items" edges to Item entities.
 897  func (uuo *UserUpdateOne) RemoveReadItems(i ...*Item) *UserUpdateOne {
 898  	ids := make([]uuid.UUID, len(i))
 899  	for j := range i {
 900  		ids[j] = i[j].ID
 901  	}
 902  	return uuo.RemoveReadItemIDs(ids...)
 903  }
 904  
 905  // ClearSubscriptions clears all "subscriptions" edges to the Subscription entity.
 906  func (uuo *UserUpdateOne) ClearSubscriptions() *UserUpdateOne {
 907  	uuo.mutation.ClearSubscriptions()
 908  	return uuo
 909  }
 910  
 911  // RemoveSubscriptionIDs removes the "subscriptions" edge to Subscription entities by IDs.
 912  func (uuo *UserUpdateOne) RemoveSubscriptionIDs(ids ...uuid.UUID) *UserUpdateOne {
 913  	uuo.mutation.RemoveSubscriptionIDs(ids...)
 914  	return uuo
 915  }
 916  
 917  // RemoveSubscriptions removes "subscriptions" edges to Subscription entities.
 918  func (uuo *UserUpdateOne) RemoveSubscriptions(s ...*Subscription) *UserUpdateOne {
 919  	ids := make([]uuid.UUID, len(s))
 920  	for i := range s {
 921  		ids[i] = s[i].ID
 922  	}
 923  	return uuo.RemoveSubscriptionIDs(ids...)
 924  }
 925  
 926  // ClearReads clears all "reads" edges to the Read entity.
 927  func (uuo *UserUpdateOne) ClearReads() *UserUpdateOne {
 928  	uuo.mutation.ClearReads()
 929  	return uuo
 930  }
 931  
 932  // RemoveReadIDs removes the "reads" edge to Read entities by IDs.
 933  func (uuo *UserUpdateOne) RemoveReadIDs(ids ...uuid.UUID) *UserUpdateOne {
 934  	uuo.mutation.RemoveReadIDs(ids...)
 935  	return uuo
 936  }
 937  
 938  // RemoveReads removes "reads" edges to Read entities.
 939  func (uuo *UserUpdateOne) RemoveReads(r ...*Read) *UserUpdateOne {
 940  	ids := make([]uuid.UUID, len(r))
 941  	for i := range r {
 942  		ids[i] = r[i].ID
 943  	}
 944  	return uuo.RemoveReadIDs(ids...)
 945  }
 946  
 947  // Where appends a list predicates to the UserUpdate builder.
 948  func (uuo *UserUpdateOne) Where(ps ...predicate.User) *UserUpdateOne {
 949  	uuo.mutation.Where(ps...)
 950  	return uuo
 951  }
 952  
 953  // Select allows selecting one or more fields (columns) of the returned entity.
 954  // The default is selecting all fields defined in the entity schema.
 955  func (uuo *UserUpdateOne) Select(field string, fields ...string) *UserUpdateOne {
 956  	uuo.fields = append([]string{field}, fields...)
 957  	return uuo
 958  }
 959  
 960  // Save executes the query and returns the updated User entity.
 961  func (uuo *UserUpdateOne) Save(ctx context.Context) (*User, error) {
 962  	uuo.defaults()
 963  	return withHooks(ctx, uuo.sqlSave, uuo.mutation, uuo.hooks)
 964  }
 965  
 966  // SaveX is like Save, but panics if an error occurs.
 967  func (uuo *UserUpdateOne) SaveX(ctx context.Context) *User {
 968  	node, err := uuo.Save(ctx)
 969  	if err != nil {
 970  		panic(err)
 971  	}
 972  	return node
 973  }
 974  
 975  // Exec executes the query on the entity.
 976  func (uuo *UserUpdateOne) Exec(ctx context.Context) error {
 977  	_, err := uuo.Save(ctx)
 978  	return err
 979  }
 980  
 981  // ExecX is like Exec, but panics if an error occurs.
 982  func (uuo *UserUpdateOne) ExecX(ctx context.Context) {
 983  	if err := uuo.Exec(ctx); err != nil {
 984  		panic(err)
 985  	}
 986  }
 987  
 988  // defaults sets the default values of the builder before save.
 989  func (uuo *UserUpdateOne) defaults() {
 990  	if _, ok := uuo.mutation.UpdatedAt(); !ok {
 991  		v := user.UpdateDefaultUpdatedAt()
 992  		uuo.mutation.SetUpdatedAt(v)
 993  	}
 994  }
 995  
 996  // check runs all checks and user-defined validators on the builder.
 997  func (uuo *UserUpdateOne) check() error {
 998  	if v, ok := uuo.mutation.Username(); ok {
 999  		if err := user.UsernameValidator(v); err != nil {
1000  			return &ValidationError{Name: "username", err: fmt.Errorf(`ent: validator failed for field "User.username": %w`, err)}
1001  		}
1002  	}
1003  	if v, ok := uuo.mutation.Password(); ok {
1004  		if err := user.PasswordValidator(v); err != nil {
1005  			return &ValidationError{Name: "password", err: fmt.Errorf(`ent: validator failed for field "User.password": %w`, err)}
1006  		}
1007  	}
1008  	if v, ok := uuo.mutation.Role(); ok {
1009  		if err := user.RoleValidator(v); err != nil {
1010  			return &ValidationError{Name: "role", err: fmt.Errorf(`ent: validator failed for field "User.role": %w`, err)}
1011  		}
1012  	}
1013  	return nil
1014  }
1015  
1016  func (uuo *UserUpdateOne) sqlSave(ctx context.Context) (_node *User, err error) {
1017  	if err := uuo.check(); err != nil {
1018  		return _node, err
1019  	}
1020  	_spec := sqlgraph.NewUpdateSpec(user.Table, user.Columns, sqlgraph.NewFieldSpec(user.FieldID, field.TypeUUID))
1021  	id, ok := uuo.mutation.ID()
1022  	if !ok {
1023  		return nil, &ValidationError{Name: "id", err: errors.New(`ent: missing "User.id" for update`)}
1024  	}
1025  	_spec.Node.ID.Value = id
1026  	if fields := uuo.fields; len(fields) > 0 {
1027  		_spec.Node.Columns = make([]string, 0, len(fields))
1028  		_spec.Node.Columns = append(_spec.Node.Columns, user.FieldID)
1029  		for _, f := range fields {
1030  			if !user.ValidColumn(f) {
1031  				return nil, &ValidationError{Name: f, err: fmt.Errorf("ent: invalid field %q for query", f)}
1032  			}
1033  			if f != user.FieldID {
1034  				_spec.Node.Columns = append(_spec.Node.Columns, f)
1035  			}
1036  		}
1037  	}
1038  	if ps := uuo.mutation.predicates; len(ps) > 0 {
1039  		_spec.Predicate = func(selector *sql.Selector) {
1040  			for i := range ps {
1041  				ps[i](selector)
1042  			}
1043  		}
1044  	}
1045  	if value, ok := uuo.mutation.Username(); ok {
1046  		_spec.SetField(user.FieldUsername, field.TypeString, value)
1047  	}
1048  	if value, ok := uuo.mutation.Password(); ok {
1049  		_spec.SetField(user.FieldPassword, field.TypeString, value)
1050  	}
1051  	if value, ok := uuo.mutation.Role(); ok {
1052  		_spec.SetField(user.FieldRole, field.TypeString, value)
1053  	}
1054  	if value, ok := uuo.mutation.CreatedAt(); ok {
1055  		_spec.SetField(user.FieldCreatedAt, field.TypeTime, value)
1056  	}
1057  	if value, ok := uuo.mutation.UpdatedAt(); ok {
1058  		_spec.SetField(user.FieldUpdatedAt, field.TypeTime, value)
1059  	}
1060  	if value, ok := uuo.mutation.DeletedAt(); ok {
1061  		_spec.SetField(user.FieldDeletedAt, field.TypeTime, value)
1062  	}
1063  	if uuo.mutation.DeletedAtCleared() {
1064  		_spec.ClearField(user.FieldDeletedAt, field.TypeTime)
1065  	}
1066  	if uuo.mutation.TokensCleared() {
1067  		edge := &sqlgraph.EdgeSpec{
1068  			Rel:     sqlgraph.O2M,
1069  			Inverse: false,
1070  			Table:   user.TokensTable,
1071  			Columns: []string{user.TokensColumn},
1072  			Bidi:    false,
1073  			Target: &sqlgraph.EdgeTarget{
1074  				IDSpec: sqlgraph.NewFieldSpec(token.FieldID, field.TypeUUID),
1075  			},
1076  		}
1077  		_spec.Edges.Clear = append(_spec.Edges.Clear, edge)
1078  	}
1079  	if nodes := uuo.mutation.RemovedTokensIDs(); len(nodes) > 0 && !uuo.mutation.TokensCleared() {
1080  		edge := &sqlgraph.EdgeSpec{
1081  			Rel:     sqlgraph.O2M,
1082  			Inverse: false,
1083  			Table:   user.TokensTable,
1084  			Columns: []string{user.TokensColumn},
1085  			Bidi:    false,
1086  			Target: &sqlgraph.EdgeTarget{
1087  				IDSpec: sqlgraph.NewFieldSpec(token.FieldID, field.TypeUUID),
1088  			},
1089  		}
1090  		for _, k := range nodes {
1091  			edge.Target.Nodes = append(edge.Target.Nodes, k)
1092  		}
1093  		_spec.Edges.Clear = append(_spec.Edges.Clear, edge)
1094  	}
1095  	if nodes := uuo.mutation.TokensIDs(); len(nodes) > 0 {
1096  		edge := &sqlgraph.EdgeSpec{
1097  			Rel:     sqlgraph.O2M,
1098  			Inverse: false,
1099  			Table:   user.TokensTable,
1100  			Columns: []string{user.TokensColumn},
1101  			Bidi:    false,
1102  			Target: &sqlgraph.EdgeTarget{
1103  				IDSpec: sqlgraph.NewFieldSpec(token.FieldID, field.TypeUUID),
1104  			},
1105  		}
1106  		for _, k := range nodes {
1107  			edge.Target.Nodes = append(edge.Target.Nodes, k)
1108  		}
1109  		_spec.Edges.Add = append(_spec.Edges.Add, edge)
1110  	}
1111  	if uuo.mutation.SubscribedFeedsCleared() {
1112  		edge := &sqlgraph.EdgeSpec{
1113  			Rel:     sqlgraph.M2M,
1114  			Inverse: false,
1115  			Table:   user.SubscribedFeedsTable,
1116  			Columns: user.SubscribedFeedsPrimaryKey,
1117  			Bidi:    false,
1118  			Target: &sqlgraph.EdgeTarget{
1119  				IDSpec: sqlgraph.NewFieldSpec(feed.FieldID, field.TypeUUID),
1120  			},
1121  		}
1122  		createE := &SubscriptionCreate{config: uuo.config, mutation: newSubscriptionMutation(uuo.config, OpCreate)}
1123  		createE.defaults()
1124  		_, specE := createE.createSpec()
1125  		edge.Target.Fields = specE.Fields
1126  		if specE.ID.Value != nil {
1127  			edge.Target.Fields = append(edge.Target.Fields, specE.ID)
1128  		}
1129  		_spec.Edges.Clear = append(_spec.Edges.Clear, edge)
1130  	}
1131  	if nodes := uuo.mutation.RemovedSubscribedFeedsIDs(); len(nodes) > 0 && !uuo.mutation.SubscribedFeedsCleared() {
1132  		edge := &sqlgraph.EdgeSpec{
1133  			Rel:     sqlgraph.M2M,
1134  			Inverse: false,
1135  			Table:   user.SubscribedFeedsTable,
1136  			Columns: user.SubscribedFeedsPrimaryKey,
1137  			Bidi:    false,
1138  			Target: &sqlgraph.EdgeTarget{
1139  				IDSpec: sqlgraph.NewFieldSpec(feed.FieldID, field.TypeUUID),
1140  			},
1141  		}
1142  		for _, k := range nodes {
1143  			edge.Target.Nodes = append(edge.Target.Nodes, k)
1144  		}
1145  		createE := &SubscriptionCreate{config: uuo.config, mutation: newSubscriptionMutation(uuo.config, OpCreate)}
1146  		createE.defaults()
1147  		_, specE := createE.createSpec()
1148  		edge.Target.Fields = specE.Fields
1149  		if specE.ID.Value != nil {
1150  			edge.Target.Fields = append(edge.Target.Fields, specE.ID)
1151  		}
1152  		_spec.Edges.Clear = append(_spec.Edges.Clear, edge)
1153  	}
1154  	if nodes := uuo.mutation.SubscribedFeedsIDs(); len(nodes) > 0 {
1155  		edge := &sqlgraph.EdgeSpec{
1156  			Rel:     sqlgraph.M2M,
1157  			Inverse: false,
1158  			Table:   user.SubscribedFeedsTable,
1159  			Columns: user.SubscribedFeedsPrimaryKey,
1160  			Bidi:    false,
1161  			Target: &sqlgraph.EdgeTarget{
1162  				IDSpec: sqlgraph.NewFieldSpec(feed.FieldID, field.TypeUUID),
1163  			},
1164  		}
1165  		for _, k := range nodes {
1166  			edge.Target.Nodes = append(edge.Target.Nodes, k)
1167  		}
1168  		createE := &SubscriptionCreate{config: uuo.config, mutation: newSubscriptionMutation(uuo.config, OpCreate)}
1169  		createE.defaults()
1170  		_, specE := createE.createSpec()
1171  		edge.Target.Fields = specE.Fields
1172  		if specE.ID.Value != nil {
1173  			edge.Target.Fields = append(edge.Target.Fields, specE.ID)
1174  		}
1175  		_spec.Edges.Add = append(_spec.Edges.Add, edge)
1176  	}
1177  	if uuo.mutation.ReadItemsCleared() {
1178  		edge := &sqlgraph.EdgeSpec{
1179  			Rel:     sqlgraph.M2M,
1180  			Inverse: false,
1181  			Table:   user.ReadItemsTable,
1182  			Columns: user.ReadItemsPrimaryKey,
1183  			Bidi:    false,
1184  			Target: &sqlgraph.EdgeTarget{
1185  				IDSpec: sqlgraph.NewFieldSpec(item.FieldID, field.TypeUUID),
1186  			},
1187  		}
1188  		createE := &ReadCreate{config: uuo.config, mutation: newReadMutation(uuo.config, OpCreate)}
1189  		createE.defaults()
1190  		_, specE := createE.createSpec()
1191  		edge.Target.Fields = specE.Fields
1192  		if specE.ID.Value != nil {
1193  			edge.Target.Fields = append(edge.Target.Fields, specE.ID)
1194  		}
1195  		_spec.Edges.Clear = append(_spec.Edges.Clear, edge)
1196  	}
1197  	if nodes := uuo.mutation.RemovedReadItemsIDs(); len(nodes) > 0 && !uuo.mutation.ReadItemsCleared() {
1198  		edge := &sqlgraph.EdgeSpec{
1199  			Rel:     sqlgraph.M2M,
1200  			Inverse: false,
1201  			Table:   user.ReadItemsTable,
1202  			Columns: user.ReadItemsPrimaryKey,
1203  			Bidi:    false,
1204  			Target: &sqlgraph.EdgeTarget{
1205  				IDSpec: sqlgraph.NewFieldSpec(item.FieldID, field.TypeUUID),
1206  			},
1207  		}
1208  		for _, k := range nodes {
1209  			edge.Target.Nodes = append(edge.Target.Nodes, k)
1210  		}
1211  		createE := &ReadCreate{config: uuo.config, mutation: newReadMutation(uuo.config, OpCreate)}
1212  		createE.defaults()
1213  		_, specE := createE.createSpec()
1214  		edge.Target.Fields = specE.Fields
1215  		if specE.ID.Value != nil {
1216  			edge.Target.Fields = append(edge.Target.Fields, specE.ID)
1217  		}
1218  		_spec.Edges.Clear = append(_spec.Edges.Clear, edge)
1219  	}
1220  	if nodes := uuo.mutation.ReadItemsIDs(); len(nodes) > 0 {
1221  		edge := &sqlgraph.EdgeSpec{
1222  			Rel:     sqlgraph.M2M,
1223  			Inverse: false,
1224  			Table:   user.ReadItemsTable,
1225  			Columns: user.ReadItemsPrimaryKey,
1226  			Bidi:    false,
1227  			Target: &sqlgraph.EdgeTarget{
1228  				IDSpec: sqlgraph.NewFieldSpec(item.FieldID, field.TypeUUID),
1229  			},
1230  		}
1231  		for _, k := range nodes {
1232  			edge.Target.Nodes = append(edge.Target.Nodes, k)
1233  		}
1234  		createE := &ReadCreate{config: uuo.config, mutation: newReadMutation(uuo.config, OpCreate)}
1235  		createE.defaults()
1236  		_, specE := createE.createSpec()
1237  		edge.Target.Fields = specE.Fields
1238  		if specE.ID.Value != nil {
1239  			edge.Target.Fields = append(edge.Target.Fields, specE.ID)
1240  		}
1241  		_spec.Edges.Add = append(_spec.Edges.Add, edge)
1242  	}
1243  	if uuo.mutation.SubscriptionsCleared() {
1244  		edge := &sqlgraph.EdgeSpec{
1245  			Rel:     sqlgraph.O2M,
1246  			Inverse: true,
1247  			Table:   user.SubscriptionsTable,
1248  			Columns: []string{user.SubscriptionsColumn},
1249  			Bidi:    false,
1250  			Target: &sqlgraph.EdgeTarget{
1251  				IDSpec: sqlgraph.NewFieldSpec(subscription.FieldID, field.TypeUUID),
1252  			},
1253  		}
1254  		_spec.Edges.Clear = append(_spec.Edges.Clear, edge)
1255  	}
1256  	if nodes := uuo.mutation.RemovedSubscriptionsIDs(); len(nodes) > 0 && !uuo.mutation.SubscriptionsCleared() {
1257  		edge := &sqlgraph.EdgeSpec{
1258  			Rel:     sqlgraph.O2M,
1259  			Inverse: true,
1260  			Table:   user.SubscriptionsTable,
1261  			Columns: []string{user.SubscriptionsColumn},
1262  			Bidi:    false,
1263  			Target: &sqlgraph.EdgeTarget{
1264  				IDSpec: sqlgraph.NewFieldSpec(subscription.FieldID, field.TypeUUID),
1265  			},
1266  		}
1267  		for _, k := range nodes {
1268  			edge.Target.Nodes = append(edge.Target.Nodes, k)
1269  		}
1270  		_spec.Edges.Clear = append(_spec.Edges.Clear, edge)
1271  	}
1272  	if nodes := uuo.mutation.SubscriptionsIDs(); len(nodes) > 0 {
1273  		edge := &sqlgraph.EdgeSpec{
1274  			Rel:     sqlgraph.O2M,
1275  			Inverse: true,
1276  			Table:   user.SubscriptionsTable,
1277  			Columns: []string{user.SubscriptionsColumn},
1278  			Bidi:    false,
1279  			Target: &sqlgraph.EdgeTarget{
1280  				IDSpec: sqlgraph.NewFieldSpec(subscription.FieldID, field.TypeUUID),
1281  			},
1282  		}
1283  		for _, k := range nodes {
1284  			edge.Target.Nodes = append(edge.Target.Nodes, k)
1285  		}
1286  		_spec.Edges.Add = append(_spec.Edges.Add, edge)
1287  	}
1288  	if uuo.mutation.ReadsCleared() {
1289  		edge := &sqlgraph.EdgeSpec{
1290  			Rel:     sqlgraph.O2M,
1291  			Inverse: true,
1292  			Table:   user.ReadsTable,
1293  			Columns: []string{user.ReadsColumn},
1294  			Bidi:    false,
1295  			Target: &sqlgraph.EdgeTarget{
1296  				IDSpec: sqlgraph.NewFieldSpec(read.FieldID, field.TypeUUID),
1297  			},
1298  		}
1299  		_spec.Edges.Clear = append(_spec.Edges.Clear, edge)
1300  	}
1301  	if nodes := uuo.mutation.RemovedReadsIDs(); len(nodes) > 0 && !uuo.mutation.ReadsCleared() {
1302  		edge := &sqlgraph.EdgeSpec{
1303  			Rel:     sqlgraph.O2M,
1304  			Inverse: true,
1305  			Table:   user.ReadsTable,
1306  			Columns: []string{user.ReadsColumn},
1307  			Bidi:    false,
1308  			Target: &sqlgraph.EdgeTarget{
1309  				IDSpec: sqlgraph.NewFieldSpec(read.FieldID, field.TypeUUID),
1310  			},
1311  		}
1312  		for _, k := range nodes {
1313  			edge.Target.Nodes = append(edge.Target.Nodes, k)
1314  		}
1315  		_spec.Edges.Clear = append(_spec.Edges.Clear, edge)
1316  	}
1317  	if nodes := uuo.mutation.ReadsIDs(); len(nodes) > 0 {
1318  		edge := &sqlgraph.EdgeSpec{
1319  			Rel:     sqlgraph.O2M,
1320  			Inverse: true,
1321  			Table:   user.ReadsTable,
1322  			Columns: []string{user.ReadsColumn},
1323  			Bidi:    false,
1324  			Target: &sqlgraph.EdgeTarget{
1325  				IDSpec: sqlgraph.NewFieldSpec(read.FieldID, field.TypeUUID),
1326  			},
1327  		}
1328  		for _, k := range nodes {
1329  			edge.Target.Nodes = append(edge.Target.Nodes, k)
1330  		}
1331  		_spec.Edges.Add = append(_spec.Edges.Add, edge)
1332  	}
1333  	_node = &User{config: uuo.config}
1334  	_spec.Assign = _node.assignValues
1335  	_spec.ScanValues = _node.scanValues
1336  	if err = sqlgraph.UpdateNode(ctx, uuo.driver, _spec); err != nil {
1337  		if _, ok := err.(*sqlgraph.NotFoundError); ok {
1338  			err = &NotFoundError{user.Label}
1339  		} else if sqlgraph.IsConstraintError(err) {
1340  			err = &ConstraintError{msg: err.Error(), wrap: err}
1341  		}
1342  		return nil, err
1343  	}
1344  	uuo.mutation.done = true
1345  	return _node, nil
1346  }