// Code generated by BobGen psql v0.42.5. DO NOT EDIT. // This file is meant to be re-generated in place and/or deleted at any time. package models import ( "context" "fmt" "io" "github.com/Gleipnir-Technology/bob" "github.com/Gleipnir-Technology/bob/dialect/psql" "github.com/Gleipnir-Technology/bob/dialect/psql/dialect" "github.com/Gleipnir-Technology/bob/dialect/psql/dm" "github.com/Gleipnir-Technology/bob/dialect/psql/sm" "github.com/Gleipnir-Technology/bob/dialect/psql/um" "github.com/Gleipnir-Technology/bob/expr" "github.com/Gleipnir-Technology/bob/orm" "github.com/Gleipnir-Technology/bob/types/pgtypes" "github.com/aarondl/opt/omit" "github.com/stephenafamo/scan" ) // CommsEmailContact is an object representing the database table. type CommsEmailContact struct { Address string `db:"address,pk" ` Confirmed bool `db:"confirmed" ` IsSubscribed bool `db:"is_subscribed" ` PublicID string `db:"public_id" ` R commsEmailContactR `db:"-" ` } // CommsEmailContactSlice is an alias for a slice of pointers to CommsEmailContact. // This should almost always be used instead of []*CommsEmailContact. type CommsEmailContactSlice []*CommsEmailContact // CommsEmailContacts contains methods to work with the email_contact table var CommsEmailContacts = psql.NewTablex[*CommsEmailContact, CommsEmailContactSlice, *CommsEmailContactSetter]("comms", "email_contact", buildCommsEmailContactColumns("comms.email_contact")) // CommsEmailContactsQuery is a query on the email_contact table type CommsEmailContactsQuery = *psql.ViewQuery[*CommsEmailContact, CommsEmailContactSlice] // commsEmailContactR is where relationships are stored. type commsEmailContactR struct { DestinationEmailLogs CommsEmailLogSlice // comms.email_log.email_log_destination_fkey Organizations OrganizationSlice // district_subscription_email.district_subscription_email_email_contact_address_fkeydistrict_subscription_email.district_subscription_email_organization_id_fkey EmailAddressNotifyEmails PublicreportNotifyEmailSlice // publicreport.notify_email.notify_email_email_address_fkey EmailAddressNotifyEmailNuisanceOlds PublicreportNotifyEmailNuisanceOldSlice // publicreport.notify_email_nuisance_old.notify_email_nuisance_email_address_fkey EmailAddressNotifyEmailWaterOlds PublicreportNotifyEmailWaterOldSlice // publicreport.notify_email_water_old.notify_email_pool_email_address_fkey EmailAddressSubscribeEmails PublicreportSubscribeEmailSlice // publicreport.subscribe_email.subscribe_email_email_address_fkey } func buildCommsEmailContactColumns(alias string) commsEmailContactColumns { return commsEmailContactColumns{ ColumnsExpr: expr.NewColumnsExpr( "address", "confirmed", "is_subscribed", "public_id", ).WithParent("comms.email_contact"), tableAlias: alias, Address: psql.Quote(alias, "address"), Confirmed: psql.Quote(alias, "confirmed"), IsSubscribed: psql.Quote(alias, "is_subscribed"), PublicID: psql.Quote(alias, "public_id"), } } type commsEmailContactColumns struct { expr.ColumnsExpr tableAlias string Address psql.Expression Confirmed psql.Expression IsSubscribed psql.Expression PublicID psql.Expression } func (c commsEmailContactColumns) Alias() string { return c.tableAlias } func (commsEmailContactColumns) AliasedAs(alias string) commsEmailContactColumns { return buildCommsEmailContactColumns(alias) } // CommsEmailContactSetter is used for insert/upsert/update operations // All values are optional, and do not have to be set // Generated columns are not included type CommsEmailContactSetter struct { Address omit.Val[string] `db:"address,pk" ` Confirmed omit.Val[bool] `db:"confirmed" ` IsSubscribed omit.Val[bool] `db:"is_subscribed" ` PublicID omit.Val[string] `db:"public_id" ` } func (s CommsEmailContactSetter) SetColumns() []string { vals := make([]string, 0, 4) if s.Address.IsValue() { vals = append(vals, "address") } if s.Confirmed.IsValue() { vals = append(vals, "confirmed") } if s.IsSubscribed.IsValue() { vals = append(vals, "is_subscribed") } if s.PublicID.IsValue() { vals = append(vals, "public_id") } return vals } func (s CommsEmailContactSetter) Overwrite(t *CommsEmailContact) { if s.Address.IsValue() { t.Address = s.Address.MustGet() } if s.Confirmed.IsValue() { t.Confirmed = s.Confirmed.MustGet() } if s.IsSubscribed.IsValue() { t.IsSubscribed = s.IsSubscribed.MustGet() } if s.PublicID.IsValue() { t.PublicID = s.PublicID.MustGet() } } func (s *CommsEmailContactSetter) Apply(q *dialect.InsertQuery) { q.AppendHooks(func(ctx context.Context, exec bob.Executor) (context.Context, error) { return CommsEmailContacts.BeforeInsertHooks.RunHooks(ctx, exec, s) }) q.AppendValues(bob.ExpressionFunc(func(ctx context.Context, w io.StringWriter, d bob.Dialect, start int) ([]any, error) { vals := make([]bob.Expression, 4) if s.Address.IsValue() { vals[0] = psql.Arg(s.Address.MustGet()) } else { vals[0] = psql.Raw("DEFAULT") } if s.Confirmed.IsValue() { vals[1] = psql.Arg(s.Confirmed.MustGet()) } else { vals[1] = psql.Raw("DEFAULT") } if s.IsSubscribed.IsValue() { vals[2] = psql.Arg(s.IsSubscribed.MustGet()) } else { vals[2] = psql.Raw("DEFAULT") } if s.PublicID.IsValue() { vals[3] = psql.Arg(s.PublicID.MustGet()) } else { vals[3] = psql.Raw("DEFAULT") } return bob.ExpressSlice(ctx, w, d, start, vals, "", ", ", "") })) } func (s CommsEmailContactSetter) UpdateMod() bob.Mod[*dialect.UpdateQuery] { return um.Set(s.Expressions()...) } func (s CommsEmailContactSetter) Expressions(prefix ...string) []bob.Expression { exprs := make([]bob.Expression, 0, 4) if s.Address.IsValue() { exprs = append(exprs, expr.Join{Sep: " = ", Exprs: []bob.Expression{ psql.Quote(append(prefix, "address")...), psql.Arg(s.Address), }}) } if s.Confirmed.IsValue() { exprs = append(exprs, expr.Join{Sep: " = ", Exprs: []bob.Expression{ psql.Quote(append(prefix, "confirmed")...), psql.Arg(s.Confirmed), }}) } if s.IsSubscribed.IsValue() { exprs = append(exprs, expr.Join{Sep: " = ", Exprs: []bob.Expression{ psql.Quote(append(prefix, "is_subscribed")...), psql.Arg(s.IsSubscribed), }}) } if s.PublicID.IsValue() { exprs = append(exprs, expr.Join{Sep: " = ", Exprs: []bob.Expression{ psql.Quote(append(prefix, "public_id")...), psql.Arg(s.PublicID), }}) } return exprs } // FindCommsEmailContact retrieves a single record by primary key // If cols is empty Find will return all columns. func FindCommsEmailContact(ctx context.Context, exec bob.Executor, AddressPK string, cols ...string) (*CommsEmailContact, error) { if len(cols) == 0 { return CommsEmailContacts.Query( sm.Where(CommsEmailContacts.Columns.Address.EQ(psql.Arg(AddressPK))), ).One(ctx, exec) } return CommsEmailContacts.Query( sm.Where(CommsEmailContacts.Columns.Address.EQ(psql.Arg(AddressPK))), sm.Columns(CommsEmailContacts.Columns.Only(cols...)), ).One(ctx, exec) } // CommsEmailContactExists checks the presence of a single record by primary key func CommsEmailContactExists(ctx context.Context, exec bob.Executor, AddressPK string) (bool, error) { return CommsEmailContacts.Query( sm.Where(CommsEmailContacts.Columns.Address.EQ(psql.Arg(AddressPK))), ).Exists(ctx, exec) } // AfterQueryHook is called after CommsEmailContact is retrieved from the database func (o *CommsEmailContact) AfterQueryHook(ctx context.Context, exec bob.Executor, queryType bob.QueryType) error { var err error switch queryType { case bob.QueryTypeSelect: ctx, err = CommsEmailContacts.AfterSelectHooks.RunHooks(ctx, exec, CommsEmailContactSlice{o}) case bob.QueryTypeInsert: ctx, err = CommsEmailContacts.AfterInsertHooks.RunHooks(ctx, exec, CommsEmailContactSlice{o}) case bob.QueryTypeUpdate: ctx, err = CommsEmailContacts.AfterUpdateHooks.RunHooks(ctx, exec, CommsEmailContactSlice{o}) case bob.QueryTypeDelete: ctx, err = CommsEmailContacts.AfterDeleteHooks.RunHooks(ctx, exec, CommsEmailContactSlice{o}) } return err } // primaryKeyVals returns the primary key values of the CommsEmailContact func (o *CommsEmailContact) primaryKeyVals() bob.Expression { return psql.Arg(o.Address) } func (o *CommsEmailContact) pkEQ() dialect.Expression { return psql.Quote("comms.email_contact", "address").EQ(bob.ExpressionFunc(func(ctx context.Context, w io.StringWriter, d bob.Dialect, start int) ([]any, error) { return o.primaryKeyVals().WriteSQL(ctx, w, d, start) })) } // Update uses an executor to update the CommsEmailContact func (o *CommsEmailContact) Update(ctx context.Context, exec bob.Executor, s *CommsEmailContactSetter) error { v, err := CommsEmailContacts.Update(s.UpdateMod(), um.Where(o.pkEQ())).One(ctx, exec) if err != nil { return err } o.R = v.R *o = *v return nil } // Delete deletes a single CommsEmailContact record with an executor func (o *CommsEmailContact) Delete(ctx context.Context, exec bob.Executor) error { _, err := CommsEmailContacts.Delete(dm.Where(o.pkEQ())).Exec(ctx, exec) return err } // Reload refreshes the CommsEmailContact using the executor func (o *CommsEmailContact) Reload(ctx context.Context, exec bob.Executor) error { o2, err := CommsEmailContacts.Query( sm.Where(CommsEmailContacts.Columns.Address.EQ(psql.Arg(o.Address))), ).One(ctx, exec) if err != nil { return err } o2.R = o.R *o = *o2 return nil } // AfterQueryHook is called after CommsEmailContactSlice is retrieved from the database func (o CommsEmailContactSlice) AfterQueryHook(ctx context.Context, exec bob.Executor, queryType bob.QueryType) error { var err error switch queryType { case bob.QueryTypeSelect: ctx, err = CommsEmailContacts.AfterSelectHooks.RunHooks(ctx, exec, o) case bob.QueryTypeInsert: ctx, err = CommsEmailContacts.AfterInsertHooks.RunHooks(ctx, exec, o) case bob.QueryTypeUpdate: ctx, err = CommsEmailContacts.AfterUpdateHooks.RunHooks(ctx, exec, o) case bob.QueryTypeDelete: ctx, err = CommsEmailContacts.AfterDeleteHooks.RunHooks(ctx, exec, o) } return err } func (o CommsEmailContactSlice) pkIN() dialect.Expression { if len(o) == 0 { return psql.Raw("NULL") } return psql.Quote("comms.email_contact", "address").In(bob.ExpressionFunc(func(ctx context.Context, w io.StringWriter, d bob.Dialect, start int) ([]any, error) { pkPairs := make([]bob.Expression, len(o)) for i, row := range o { pkPairs[i] = row.primaryKeyVals() } return bob.ExpressSlice(ctx, w, d, start, pkPairs, "", ", ", "") })) } // copyMatchingRows finds models in the given slice that have the same primary key // then it first copies the existing relationships from the old model to the new model // and then replaces the old model in the slice with the new model func (o CommsEmailContactSlice) copyMatchingRows(from ...*CommsEmailContact) { for i, old := range o { for _, new := range from { if new.Address != old.Address { continue } new.R = old.R o[i] = new break } } } // UpdateMod modifies an update query with "WHERE primary_key IN (o...)" func (o CommsEmailContactSlice) UpdateMod() bob.Mod[*dialect.UpdateQuery] { return bob.ModFunc[*dialect.UpdateQuery](func(q *dialect.UpdateQuery) { q.AppendHooks(func(ctx context.Context, exec bob.Executor) (context.Context, error) { return CommsEmailContacts.BeforeUpdateHooks.RunHooks(ctx, exec, o) }) q.AppendLoader(bob.LoaderFunc(func(ctx context.Context, exec bob.Executor, retrieved any) error { var err error switch retrieved := retrieved.(type) { case *CommsEmailContact: o.copyMatchingRows(retrieved) case []*CommsEmailContact: o.copyMatchingRows(retrieved...) case CommsEmailContactSlice: o.copyMatchingRows(retrieved...) default: // If the retrieved value is not a CommsEmailContact or a slice of CommsEmailContact // then run the AfterUpdateHooks on the slice _, err = CommsEmailContacts.AfterUpdateHooks.RunHooks(ctx, exec, o) } return err })) q.AppendWhere(o.pkIN()) }) } // DeleteMod modifies an delete query with "WHERE primary_key IN (o...)" func (o CommsEmailContactSlice) DeleteMod() bob.Mod[*dialect.DeleteQuery] { return bob.ModFunc[*dialect.DeleteQuery](func(q *dialect.DeleteQuery) { q.AppendHooks(func(ctx context.Context, exec bob.Executor) (context.Context, error) { return CommsEmailContacts.BeforeDeleteHooks.RunHooks(ctx, exec, o) }) q.AppendLoader(bob.LoaderFunc(func(ctx context.Context, exec bob.Executor, retrieved any) error { var err error switch retrieved := retrieved.(type) { case *CommsEmailContact: o.copyMatchingRows(retrieved) case []*CommsEmailContact: o.copyMatchingRows(retrieved...) case CommsEmailContactSlice: o.copyMatchingRows(retrieved...) default: // If the retrieved value is not a CommsEmailContact or a slice of CommsEmailContact // then run the AfterDeleteHooks on the slice _, err = CommsEmailContacts.AfterDeleteHooks.RunHooks(ctx, exec, o) } return err })) q.AppendWhere(o.pkIN()) }) } func (o CommsEmailContactSlice) UpdateAll(ctx context.Context, exec bob.Executor, vals CommsEmailContactSetter) error { if len(o) == 0 { return nil } _, err := CommsEmailContacts.Update(vals.UpdateMod(), o.UpdateMod()).All(ctx, exec) return err } func (o CommsEmailContactSlice) DeleteAll(ctx context.Context, exec bob.Executor) error { if len(o) == 0 { return nil } _, err := CommsEmailContacts.Delete(o.DeleteMod()).Exec(ctx, exec) return err } func (o CommsEmailContactSlice) ReloadAll(ctx context.Context, exec bob.Executor) error { if len(o) == 0 { return nil } o2, err := CommsEmailContacts.Query(sm.Where(o.pkIN())).All(ctx, exec) if err != nil { return err } o.copyMatchingRows(o2...) return nil } // DestinationEmailLogs starts a query for related objects on comms.email_log func (o *CommsEmailContact) DestinationEmailLogs(mods ...bob.Mod[*dialect.SelectQuery]) CommsEmailLogsQuery { return CommsEmailLogs.Query(append(mods, sm.Where(CommsEmailLogs.Columns.Destination.EQ(psql.Arg(o.Address))), )...) } func (os CommsEmailContactSlice) DestinationEmailLogs(mods ...bob.Mod[*dialect.SelectQuery]) CommsEmailLogsQuery { pkAddress := make(pgtypes.Array[string], 0, len(os)) for _, o := range os { if o == nil { continue } pkAddress = append(pkAddress, o.Address) } PKArgExpr := psql.Select(sm.Columns( psql.F("unnest", psql.Cast(psql.Arg(pkAddress), "text[]")), )) return CommsEmailLogs.Query(append(mods, sm.Where(psql.Group(CommsEmailLogs.Columns.Destination).OP("IN", PKArgExpr)), )...) } // Organizations starts a query for related objects on organization func (o *CommsEmailContact) Organizations(mods ...bob.Mod[*dialect.SelectQuery]) OrganizationsQuery { return Organizations.Query(append(mods, sm.InnerJoin(DistrictSubscriptionEmails.NameAs()).On( Organizations.Columns.ID.EQ(DistrictSubscriptionEmails.Columns.OrganizationID)), sm.Where(DistrictSubscriptionEmails.Columns.EmailContactAddress.EQ(psql.Arg(o.Address))), )...) } func (os CommsEmailContactSlice) Organizations(mods ...bob.Mod[*dialect.SelectQuery]) OrganizationsQuery { pkAddress := make(pgtypes.Array[string], 0, len(os)) for _, o := range os { if o == nil { continue } pkAddress = append(pkAddress, o.Address) } PKArgExpr := psql.Select(sm.Columns( psql.F("unnest", psql.Cast(psql.Arg(pkAddress), "text[]")), )) return Organizations.Query(append(mods, sm.InnerJoin(DistrictSubscriptionEmails.NameAs()).On( Organizations.Columns.ID.EQ(DistrictSubscriptionEmails.Columns.OrganizationID), ), sm.Where(psql.Group(DistrictSubscriptionEmails.Columns.EmailContactAddress).OP("IN", PKArgExpr)), )...) } // EmailAddressNotifyEmails starts a query for related objects on publicreport.notify_email func (o *CommsEmailContact) EmailAddressNotifyEmails(mods ...bob.Mod[*dialect.SelectQuery]) PublicreportNotifyEmailsQuery { return PublicreportNotifyEmails.Query(append(mods, sm.Where(PublicreportNotifyEmails.Columns.EmailAddress.EQ(psql.Arg(o.Address))), )...) } func (os CommsEmailContactSlice) EmailAddressNotifyEmails(mods ...bob.Mod[*dialect.SelectQuery]) PublicreportNotifyEmailsQuery { pkAddress := make(pgtypes.Array[string], 0, len(os)) for _, o := range os { if o == nil { continue } pkAddress = append(pkAddress, o.Address) } PKArgExpr := psql.Select(sm.Columns( psql.F("unnest", psql.Cast(psql.Arg(pkAddress), "text[]")), )) return PublicreportNotifyEmails.Query(append(mods, sm.Where(psql.Group(PublicreportNotifyEmails.Columns.EmailAddress).OP("IN", PKArgExpr)), )...) } // EmailAddressNotifyEmailNuisanceOlds starts a query for related objects on publicreport.notify_email_nuisance_old func (o *CommsEmailContact) EmailAddressNotifyEmailNuisanceOlds(mods ...bob.Mod[*dialect.SelectQuery]) PublicreportNotifyEmailNuisanceOldsQuery { return PublicreportNotifyEmailNuisanceOlds.Query(append(mods, sm.Where(PublicreportNotifyEmailNuisanceOlds.Columns.EmailAddress.EQ(psql.Arg(o.Address))), )...) } func (os CommsEmailContactSlice) EmailAddressNotifyEmailNuisanceOlds(mods ...bob.Mod[*dialect.SelectQuery]) PublicreportNotifyEmailNuisanceOldsQuery { pkAddress := make(pgtypes.Array[string], 0, len(os)) for _, o := range os { if o == nil { continue } pkAddress = append(pkAddress, o.Address) } PKArgExpr := psql.Select(sm.Columns( psql.F("unnest", psql.Cast(psql.Arg(pkAddress), "text[]")), )) return PublicreportNotifyEmailNuisanceOlds.Query(append(mods, sm.Where(psql.Group(PublicreportNotifyEmailNuisanceOlds.Columns.EmailAddress).OP("IN", PKArgExpr)), )...) } // EmailAddressNotifyEmailWaterOlds starts a query for related objects on publicreport.notify_email_water_old func (o *CommsEmailContact) EmailAddressNotifyEmailWaterOlds(mods ...bob.Mod[*dialect.SelectQuery]) PublicreportNotifyEmailWaterOldsQuery { return PublicreportNotifyEmailWaterOlds.Query(append(mods, sm.Where(PublicreportNotifyEmailWaterOlds.Columns.EmailAddress.EQ(psql.Arg(o.Address))), )...) } func (os CommsEmailContactSlice) EmailAddressNotifyEmailWaterOlds(mods ...bob.Mod[*dialect.SelectQuery]) PublicreportNotifyEmailWaterOldsQuery { pkAddress := make(pgtypes.Array[string], 0, len(os)) for _, o := range os { if o == nil { continue } pkAddress = append(pkAddress, o.Address) } PKArgExpr := psql.Select(sm.Columns( psql.F("unnest", psql.Cast(psql.Arg(pkAddress), "text[]")), )) return PublicreportNotifyEmailWaterOlds.Query(append(mods, sm.Where(psql.Group(PublicreportNotifyEmailWaterOlds.Columns.EmailAddress).OP("IN", PKArgExpr)), )...) } // EmailAddressSubscribeEmails starts a query for related objects on publicreport.subscribe_email func (o *CommsEmailContact) EmailAddressSubscribeEmails(mods ...bob.Mod[*dialect.SelectQuery]) PublicreportSubscribeEmailsQuery { return PublicreportSubscribeEmails.Query(append(mods, sm.Where(PublicreportSubscribeEmails.Columns.EmailAddress.EQ(psql.Arg(o.Address))), )...) } func (os CommsEmailContactSlice) EmailAddressSubscribeEmails(mods ...bob.Mod[*dialect.SelectQuery]) PublicreportSubscribeEmailsQuery { pkAddress := make(pgtypes.Array[string], 0, len(os)) for _, o := range os { if o == nil { continue } pkAddress = append(pkAddress, o.Address) } PKArgExpr := psql.Select(sm.Columns( psql.F("unnest", psql.Cast(psql.Arg(pkAddress), "text[]")), )) return PublicreportSubscribeEmails.Query(append(mods, sm.Where(psql.Group(PublicreportSubscribeEmails.Columns.EmailAddress).OP("IN", PKArgExpr)), )...) } func insertCommsEmailContactDestinationEmailLogs0(ctx context.Context, exec bob.Executor, commsEmailLogs1 []*CommsEmailLogSetter, commsEmailContact0 *CommsEmailContact) (CommsEmailLogSlice, error) { for i := range commsEmailLogs1 { commsEmailLogs1[i].Destination = omit.From(commsEmailContact0.Address) } ret, err := CommsEmailLogs.Insert(bob.ToMods(commsEmailLogs1...)).All(ctx, exec) if err != nil { return ret, fmt.Errorf("insertCommsEmailContactDestinationEmailLogs0: %w", err) } return ret, nil } func attachCommsEmailContactDestinationEmailLogs0(ctx context.Context, exec bob.Executor, count int, commsEmailLogs1 CommsEmailLogSlice, commsEmailContact0 *CommsEmailContact) (CommsEmailLogSlice, error) { setter := &CommsEmailLogSetter{ Destination: omit.From(commsEmailContact0.Address), } err := commsEmailLogs1.UpdateAll(ctx, exec, *setter) if err != nil { return nil, fmt.Errorf("attachCommsEmailContactDestinationEmailLogs0: %w", err) } return commsEmailLogs1, nil } func (commsEmailContact0 *CommsEmailContact) InsertDestinationEmailLogs(ctx context.Context, exec bob.Executor, related ...*CommsEmailLogSetter) error { if len(related) == 0 { return nil } var err error commsEmailLogs1, err := insertCommsEmailContactDestinationEmailLogs0(ctx, exec, related, commsEmailContact0) if err != nil { return err } commsEmailContact0.R.DestinationEmailLogs = append(commsEmailContact0.R.DestinationEmailLogs, commsEmailLogs1...) for _, rel := range commsEmailLogs1 { rel.R.DestinationEmailContact = commsEmailContact0 } return nil } func (commsEmailContact0 *CommsEmailContact) AttachDestinationEmailLogs(ctx context.Context, exec bob.Executor, related ...*CommsEmailLog) error { if len(related) == 0 { return nil } var err error commsEmailLogs1 := CommsEmailLogSlice(related) _, err = attachCommsEmailContactDestinationEmailLogs0(ctx, exec, len(related), commsEmailLogs1, commsEmailContact0) if err != nil { return err } commsEmailContact0.R.DestinationEmailLogs = append(commsEmailContact0.R.DestinationEmailLogs, commsEmailLogs1...) for _, rel := range related { rel.R.DestinationEmailContact = commsEmailContact0 } return nil } func attachCommsEmailContactOrganizations0(ctx context.Context, exec bob.Executor, count int, commsEmailContact0 *CommsEmailContact, organizations2 OrganizationSlice) (DistrictSubscriptionEmailSlice, error) { setters := make([]*DistrictSubscriptionEmailSetter, count) for i := range count { setters[i] = &DistrictSubscriptionEmailSetter{ EmailContactAddress: omit.From(commsEmailContact0.Address), OrganizationID: omit.From(organizations2[i].ID), } } districtSubscriptionEmails1, err := DistrictSubscriptionEmails.Insert(bob.ToMods(setters...)).All(ctx, exec) if err != nil { return nil, fmt.Errorf("attachCommsEmailContactOrganizations0: %w", err) } return districtSubscriptionEmails1, nil } func (commsEmailContact0 *CommsEmailContact) InsertOrganizations(ctx context.Context, exec bob.Executor, related ...*OrganizationSetter) error { if len(related) == 0 { return nil } var err error inserted, err := Organizations.Insert(bob.ToMods(related...)).All(ctx, exec) if err != nil { return fmt.Errorf("inserting related objects: %w", err) } organizations2 := OrganizationSlice(inserted) _, err = attachCommsEmailContactOrganizations0(ctx, exec, len(related), commsEmailContact0, organizations2) if err != nil { return err } commsEmailContact0.R.Organizations = append(commsEmailContact0.R.Organizations, organizations2...) for _, rel := range organizations2 { rel.R.EmailContacts = append(rel.R.EmailContacts, commsEmailContact0) } return nil } func (commsEmailContact0 *CommsEmailContact) AttachOrganizations(ctx context.Context, exec bob.Executor, related ...*Organization) error { if len(related) == 0 { return nil } var err error organizations2 := OrganizationSlice(related) _, err = attachCommsEmailContactOrganizations0(ctx, exec, len(related), commsEmailContact0, organizations2) if err != nil { return err } commsEmailContact0.R.Organizations = append(commsEmailContact0.R.Organizations, organizations2...) for _, rel := range related { rel.R.EmailContacts = append(rel.R.EmailContacts, commsEmailContact0) } return nil } func insertCommsEmailContactEmailAddressNotifyEmails0(ctx context.Context, exec bob.Executor, publicreportNotifyEmails1 []*PublicreportNotifyEmailSetter, commsEmailContact0 *CommsEmailContact) (PublicreportNotifyEmailSlice, error) { for i := range publicreportNotifyEmails1 { publicreportNotifyEmails1[i].EmailAddress = omit.From(commsEmailContact0.Address) } ret, err := PublicreportNotifyEmails.Insert(bob.ToMods(publicreportNotifyEmails1...)).All(ctx, exec) if err != nil { return ret, fmt.Errorf("insertCommsEmailContactEmailAddressNotifyEmails0: %w", err) } return ret, nil } func attachCommsEmailContactEmailAddressNotifyEmails0(ctx context.Context, exec bob.Executor, count int, publicreportNotifyEmails1 PublicreportNotifyEmailSlice, commsEmailContact0 *CommsEmailContact) (PublicreportNotifyEmailSlice, error) { setter := &PublicreportNotifyEmailSetter{ EmailAddress: omit.From(commsEmailContact0.Address), } err := publicreportNotifyEmails1.UpdateAll(ctx, exec, *setter) if err != nil { return nil, fmt.Errorf("attachCommsEmailContactEmailAddressNotifyEmails0: %w", err) } return publicreportNotifyEmails1, nil } func (commsEmailContact0 *CommsEmailContact) InsertEmailAddressNotifyEmails(ctx context.Context, exec bob.Executor, related ...*PublicreportNotifyEmailSetter) error { if len(related) == 0 { return nil } var err error publicreportNotifyEmails1, err := insertCommsEmailContactEmailAddressNotifyEmails0(ctx, exec, related, commsEmailContact0) if err != nil { return err } commsEmailContact0.R.EmailAddressNotifyEmails = append(commsEmailContact0.R.EmailAddressNotifyEmails, publicreportNotifyEmails1...) for _, rel := range publicreportNotifyEmails1 { rel.R.EmailAddressEmailContact = commsEmailContact0 } return nil } func (commsEmailContact0 *CommsEmailContact) AttachEmailAddressNotifyEmails(ctx context.Context, exec bob.Executor, related ...*PublicreportNotifyEmail) error { if len(related) == 0 { return nil } var err error publicreportNotifyEmails1 := PublicreportNotifyEmailSlice(related) _, err = attachCommsEmailContactEmailAddressNotifyEmails0(ctx, exec, len(related), publicreportNotifyEmails1, commsEmailContact0) if err != nil { return err } commsEmailContact0.R.EmailAddressNotifyEmails = append(commsEmailContact0.R.EmailAddressNotifyEmails, publicreportNotifyEmails1...) for _, rel := range related { rel.R.EmailAddressEmailContact = commsEmailContact0 } return nil } func insertCommsEmailContactEmailAddressNotifyEmailNuisanceOlds0(ctx context.Context, exec bob.Executor, publicreportNotifyEmailNuisanceOlds1 []*PublicreportNotifyEmailNuisanceOldSetter, commsEmailContact0 *CommsEmailContact) (PublicreportNotifyEmailNuisanceOldSlice, error) { for i := range publicreportNotifyEmailNuisanceOlds1 { publicreportNotifyEmailNuisanceOlds1[i].EmailAddress = omit.From(commsEmailContact0.Address) } ret, err := PublicreportNotifyEmailNuisanceOlds.Insert(bob.ToMods(publicreportNotifyEmailNuisanceOlds1...)).All(ctx, exec) if err != nil { return ret, fmt.Errorf("insertCommsEmailContactEmailAddressNotifyEmailNuisanceOlds0: %w", err) } return ret, nil } func attachCommsEmailContactEmailAddressNotifyEmailNuisanceOlds0(ctx context.Context, exec bob.Executor, count int, publicreportNotifyEmailNuisanceOlds1 PublicreportNotifyEmailNuisanceOldSlice, commsEmailContact0 *CommsEmailContact) (PublicreportNotifyEmailNuisanceOldSlice, error) { setter := &PublicreportNotifyEmailNuisanceOldSetter{ EmailAddress: omit.From(commsEmailContact0.Address), } err := publicreportNotifyEmailNuisanceOlds1.UpdateAll(ctx, exec, *setter) if err != nil { return nil, fmt.Errorf("attachCommsEmailContactEmailAddressNotifyEmailNuisanceOlds0: %w", err) } return publicreportNotifyEmailNuisanceOlds1, nil } func (commsEmailContact0 *CommsEmailContact) InsertEmailAddressNotifyEmailNuisanceOlds(ctx context.Context, exec bob.Executor, related ...*PublicreportNotifyEmailNuisanceOldSetter) error { if len(related) == 0 { return nil } var err error publicreportNotifyEmailNuisanceOlds1, err := insertCommsEmailContactEmailAddressNotifyEmailNuisanceOlds0(ctx, exec, related, commsEmailContact0) if err != nil { return err } commsEmailContact0.R.EmailAddressNotifyEmailNuisanceOlds = append(commsEmailContact0.R.EmailAddressNotifyEmailNuisanceOlds, publicreportNotifyEmailNuisanceOlds1...) for _, rel := range publicreportNotifyEmailNuisanceOlds1 { rel.R.EmailAddressEmailContact = commsEmailContact0 } return nil } func (commsEmailContact0 *CommsEmailContact) AttachEmailAddressNotifyEmailNuisanceOlds(ctx context.Context, exec bob.Executor, related ...*PublicreportNotifyEmailNuisanceOld) error { if len(related) == 0 { return nil } var err error publicreportNotifyEmailNuisanceOlds1 := PublicreportNotifyEmailNuisanceOldSlice(related) _, err = attachCommsEmailContactEmailAddressNotifyEmailNuisanceOlds0(ctx, exec, len(related), publicreportNotifyEmailNuisanceOlds1, commsEmailContact0) if err != nil { return err } commsEmailContact0.R.EmailAddressNotifyEmailNuisanceOlds = append(commsEmailContact0.R.EmailAddressNotifyEmailNuisanceOlds, publicreportNotifyEmailNuisanceOlds1...) for _, rel := range related { rel.R.EmailAddressEmailContact = commsEmailContact0 } return nil } func insertCommsEmailContactEmailAddressNotifyEmailWaterOlds0(ctx context.Context, exec bob.Executor, publicreportNotifyEmailWaterOlds1 []*PublicreportNotifyEmailWaterOldSetter, commsEmailContact0 *CommsEmailContact) (PublicreportNotifyEmailWaterOldSlice, error) { for i := range publicreportNotifyEmailWaterOlds1 { publicreportNotifyEmailWaterOlds1[i].EmailAddress = omit.From(commsEmailContact0.Address) } ret, err := PublicreportNotifyEmailWaterOlds.Insert(bob.ToMods(publicreportNotifyEmailWaterOlds1...)).All(ctx, exec) if err != nil { return ret, fmt.Errorf("insertCommsEmailContactEmailAddressNotifyEmailWaterOlds0: %w", err) } return ret, nil } func attachCommsEmailContactEmailAddressNotifyEmailWaterOlds0(ctx context.Context, exec bob.Executor, count int, publicreportNotifyEmailWaterOlds1 PublicreportNotifyEmailWaterOldSlice, commsEmailContact0 *CommsEmailContact) (PublicreportNotifyEmailWaterOldSlice, error) { setter := &PublicreportNotifyEmailWaterOldSetter{ EmailAddress: omit.From(commsEmailContact0.Address), } err := publicreportNotifyEmailWaterOlds1.UpdateAll(ctx, exec, *setter) if err != nil { return nil, fmt.Errorf("attachCommsEmailContactEmailAddressNotifyEmailWaterOlds0: %w", err) } return publicreportNotifyEmailWaterOlds1, nil } func (commsEmailContact0 *CommsEmailContact) InsertEmailAddressNotifyEmailWaterOlds(ctx context.Context, exec bob.Executor, related ...*PublicreportNotifyEmailWaterOldSetter) error { if len(related) == 0 { return nil } var err error publicreportNotifyEmailWaterOlds1, err := insertCommsEmailContactEmailAddressNotifyEmailWaterOlds0(ctx, exec, related, commsEmailContact0) if err != nil { return err } commsEmailContact0.R.EmailAddressNotifyEmailWaterOlds = append(commsEmailContact0.R.EmailAddressNotifyEmailWaterOlds, publicreportNotifyEmailWaterOlds1...) for _, rel := range publicreportNotifyEmailWaterOlds1 { rel.R.EmailAddressEmailContact = commsEmailContact0 } return nil } func (commsEmailContact0 *CommsEmailContact) AttachEmailAddressNotifyEmailWaterOlds(ctx context.Context, exec bob.Executor, related ...*PublicreportNotifyEmailWaterOld) error { if len(related) == 0 { return nil } var err error publicreportNotifyEmailWaterOlds1 := PublicreportNotifyEmailWaterOldSlice(related) _, err = attachCommsEmailContactEmailAddressNotifyEmailWaterOlds0(ctx, exec, len(related), publicreportNotifyEmailWaterOlds1, commsEmailContact0) if err != nil { return err } commsEmailContact0.R.EmailAddressNotifyEmailWaterOlds = append(commsEmailContact0.R.EmailAddressNotifyEmailWaterOlds, publicreportNotifyEmailWaterOlds1...) for _, rel := range related { rel.R.EmailAddressEmailContact = commsEmailContact0 } return nil } func insertCommsEmailContactEmailAddressSubscribeEmails0(ctx context.Context, exec bob.Executor, publicreportSubscribeEmails1 []*PublicreportSubscribeEmailSetter, commsEmailContact0 *CommsEmailContact) (PublicreportSubscribeEmailSlice, error) { for i := range publicreportSubscribeEmails1 { publicreportSubscribeEmails1[i].EmailAddress = omit.From(commsEmailContact0.Address) } ret, err := PublicreportSubscribeEmails.Insert(bob.ToMods(publicreportSubscribeEmails1...)).All(ctx, exec) if err != nil { return ret, fmt.Errorf("insertCommsEmailContactEmailAddressSubscribeEmails0: %w", err) } return ret, nil } func attachCommsEmailContactEmailAddressSubscribeEmails0(ctx context.Context, exec bob.Executor, count int, publicreportSubscribeEmails1 PublicreportSubscribeEmailSlice, commsEmailContact0 *CommsEmailContact) (PublicreportSubscribeEmailSlice, error) { setter := &PublicreportSubscribeEmailSetter{ EmailAddress: omit.From(commsEmailContact0.Address), } err := publicreportSubscribeEmails1.UpdateAll(ctx, exec, *setter) if err != nil { return nil, fmt.Errorf("attachCommsEmailContactEmailAddressSubscribeEmails0: %w", err) } return publicreportSubscribeEmails1, nil } func (commsEmailContact0 *CommsEmailContact) InsertEmailAddressSubscribeEmails(ctx context.Context, exec bob.Executor, related ...*PublicreportSubscribeEmailSetter) error { if len(related) == 0 { return nil } var err error publicreportSubscribeEmails1, err := insertCommsEmailContactEmailAddressSubscribeEmails0(ctx, exec, related, commsEmailContact0) if err != nil { return err } commsEmailContact0.R.EmailAddressSubscribeEmails = append(commsEmailContact0.R.EmailAddressSubscribeEmails, publicreportSubscribeEmails1...) for _, rel := range publicreportSubscribeEmails1 { rel.R.EmailAddressEmailContact = commsEmailContact0 } return nil } func (commsEmailContact0 *CommsEmailContact) AttachEmailAddressSubscribeEmails(ctx context.Context, exec bob.Executor, related ...*PublicreportSubscribeEmail) error { if len(related) == 0 { return nil } var err error publicreportSubscribeEmails1 := PublicreportSubscribeEmailSlice(related) _, err = attachCommsEmailContactEmailAddressSubscribeEmails0(ctx, exec, len(related), publicreportSubscribeEmails1, commsEmailContact0) if err != nil { return err } commsEmailContact0.R.EmailAddressSubscribeEmails = append(commsEmailContact0.R.EmailAddressSubscribeEmails, publicreportSubscribeEmails1...) for _, rel := range related { rel.R.EmailAddressEmailContact = commsEmailContact0 } return nil } type commsEmailContactWhere[Q psql.Filterable] struct { Address psql.WhereMod[Q, string] Confirmed psql.WhereMod[Q, bool] IsSubscribed psql.WhereMod[Q, bool] PublicID psql.WhereMod[Q, string] } func (commsEmailContactWhere[Q]) AliasedAs(alias string) commsEmailContactWhere[Q] { return buildCommsEmailContactWhere[Q](buildCommsEmailContactColumns(alias)) } func buildCommsEmailContactWhere[Q psql.Filterable](cols commsEmailContactColumns) commsEmailContactWhere[Q] { return commsEmailContactWhere[Q]{ Address: psql.Where[Q, string](cols.Address), Confirmed: psql.Where[Q, bool](cols.Confirmed), IsSubscribed: psql.Where[Q, bool](cols.IsSubscribed), PublicID: psql.Where[Q, string](cols.PublicID), } } func (o *CommsEmailContact) Preload(name string, retrieved any) error { if o == nil { return nil } switch name { case "DestinationEmailLogs": rels, ok := retrieved.(CommsEmailLogSlice) if !ok { return fmt.Errorf("commsEmailContact cannot load %T as %q", retrieved, name) } o.R.DestinationEmailLogs = rels for _, rel := range rels { if rel != nil { rel.R.DestinationEmailContact = o } } return nil case "Organizations": rels, ok := retrieved.(OrganizationSlice) if !ok { return fmt.Errorf("commsEmailContact cannot load %T as %q", retrieved, name) } o.R.Organizations = rels for _, rel := range rels { if rel != nil { rel.R.EmailContacts = CommsEmailContactSlice{o} } } return nil case "EmailAddressNotifyEmails": rels, ok := retrieved.(PublicreportNotifyEmailSlice) if !ok { return fmt.Errorf("commsEmailContact cannot load %T as %q", retrieved, name) } o.R.EmailAddressNotifyEmails = rels for _, rel := range rels { if rel != nil { rel.R.EmailAddressEmailContact = o } } return nil case "EmailAddressNotifyEmailNuisanceOlds": rels, ok := retrieved.(PublicreportNotifyEmailNuisanceOldSlice) if !ok { return fmt.Errorf("commsEmailContact cannot load %T as %q", retrieved, name) } o.R.EmailAddressNotifyEmailNuisanceOlds = rels for _, rel := range rels { if rel != nil { rel.R.EmailAddressEmailContact = o } } return nil case "EmailAddressNotifyEmailWaterOlds": rels, ok := retrieved.(PublicreportNotifyEmailWaterOldSlice) if !ok { return fmt.Errorf("commsEmailContact cannot load %T as %q", retrieved, name) } o.R.EmailAddressNotifyEmailWaterOlds = rels for _, rel := range rels { if rel != nil { rel.R.EmailAddressEmailContact = o } } return nil case "EmailAddressSubscribeEmails": rels, ok := retrieved.(PublicreportSubscribeEmailSlice) if !ok { return fmt.Errorf("commsEmailContact cannot load %T as %q", retrieved, name) } o.R.EmailAddressSubscribeEmails = rels for _, rel := range rels { if rel != nil { rel.R.EmailAddressEmailContact = o } } return nil default: return fmt.Errorf("commsEmailContact has no relationship %q", name) } } type commsEmailContactPreloader struct{} func buildCommsEmailContactPreloader() commsEmailContactPreloader { return commsEmailContactPreloader{} } type commsEmailContactThenLoader[Q orm.Loadable] struct { DestinationEmailLogs func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q] Organizations func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q] EmailAddressNotifyEmails func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q] EmailAddressNotifyEmailNuisanceOlds func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q] EmailAddressNotifyEmailWaterOlds func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q] EmailAddressSubscribeEmails func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q] } func buildCommsEmailContactThenLoader[Q orm.Loadable]() commsEmailContactThenLoader[Q] { type DestinationEmailLogsLoadInterface interface { LoadDestinationEmailLogs(context.Context, bob.Executor, ...bob.Mod[*dialect.SelectQuery]) error } type OrganizationsLoadInterface interface { LoadOrganizations(context.Context, bob.Executor, ...bob.Mod[*dialect.SelectQuery]) error } type EmailAddressNotifyEmailsLoadInterface interface { LoadEmailAddressNotifyEmails(context.Context, bob.Executor, ...bob.Mod[*dialect.SelectQuery]) error } type EmailAddressNotifyEmailNuisanceOldsLoadInterface interface { LoadEmailAddressNotifyEmailNuisanceOlds(context.Context, bob.Executor, ...bob.Mod[*dialect.SelectQuery]) error } type EmailAddressNotifyEmailWaterOldsLoadInterface interface { LoadEmailAddressNotifyEmailWaterOlds(context.Context, bob.Executor, ...bob.Mod[*dialect.SelectQuery]) error } type EmailAddressSubscribeEmailsLoadInterface interface { LoadEmailAddressSubscribeEmails(context.Context, bob.Executor, ...bob.Mod[*dialect.SelectQuery]) error } return commsEmailContactThenLoader[Q]{ DestinationEmailLogs: thenLoadBuilder[Q]( "DestinationEmailLogs", func(ctx context.Context, exec bob.Executor, retrieved DestinationEmailLogsLoadInterface, mods ...bob.Mod[*dialect.SelectQuery]) error { return retrieved.LoadDestinationEmailLogs(ctx, exec, mods...) }, ), Organizations: thenLoadBuilder[Q]( "Organizations", func(ctx context.Context, exec bob.Executor, retrieved OrganizationsLoadInterface, mods ...bob.Mod[*dialect.SelectQuery]) error { return retrieved.LoadOrganizations(ctx, exec, mods...) }, ), EmailAddressNotifyEmails: thenLoadBuilder[Q]( "EmailAddressNotifyEmails", func(ctx context.Context, exec bob.Executor, retrieved EmailAddressNotifyEmailsLoadInterface, mods ...bob.Mod[*dialect.SelectQuery]) error { return retrieved.LoadEmailAddressNotifyEmails(ctx, exec, mods...) }, ), EmailAddressNotifyEmailNuisanceOlds: thenLoadBuilder[Q]( "EmailAddressNotifyEmailNuisanceOlds", func(ctx context.Context, exec bob.Executor, retrieved EmailAddressNotifyEmailNuisanceOldsLoadInterface, mods ...bob.Mod[*dialect.SelectQuery]) error { return retrieved.LoadEmailAddressNotifyEmailNuisanceOlds(ctx, exec, mods...) }, ), EmailAddressNotifyEmailWaterOlds: thenLoadBuilder[Q]( "EmailAddressNotifyEmailWaterOlds", func(ctx context.Context, exec bob.Executor, retrieved EmailAddressNotifyEmailWaterOldsLoadInterface, mods ...bob.Mod[*dialect.SelectQuery]) error { return retrieved.LoadEmailAddressNotifyEmailWaterOlds(ctx, exec, mods...) }, ), EmailAddressSubscribeEmails: thenLoadBuilder[Q]( "EmailAddressSubscribeEmails", func(ctx context.Context, exec bob.Executor, retrieved EmailAddressSubscribeEmailsLoadInterface, mods ...bob.Mod[*dialect.SelectQuery]) error { return retrieved.LoadEmailAddressSubscribeEmails(ctx, exec, mods...) }, ), } } // LoadDestinationEmailLogs loads the commsEmailContact's DestinationEmailLogs into the .R struct func (o *CommsEmailContact) LoadDestinationEmailLogs(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error { if o == nil { return nil } // Reset the relationship o.R.DestinationEmailLogs = nil related, err := o.DestinationEmailLogs(mods...).All(ctx, exec) if err != nil { return err } for _, rel := range related { rel.R.DestinationEmailContact = o } o.R.DestinationEmailLogs = related return nil } // LoadDestinationEmailLogs loads the commsEmailContact's DestinationEmailLogs into the .R struct func (os CommsEmailContactSlice) LoadDestinationEmailLogs(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error { if len(os) == 0 { return nil } commsEmailLogs, err := os.DestinationEmailLogs(mods...).All(ctx, exec) if err != nil { return err } for _, o := range os { if o == nil { continue } o.R.DestinationEmailLogs = nil } for _, o := range os { if o == nil { continue } for _, rel := range commsEmailLogs { if !(o.Address == rel.Destination) { continue } rel.R.DestinationEmailContact = o o.R.DestinationEmailLogs = append(o.R.DestinationEmailLogs, rel) } } return nil } // LoadOrganizations loads the commsEmailContact's Organizations into the .R struct func (o *CommsEmailContact) LoadOrganizations(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error { if o == nil { return nil } // Reset the relationship o.R.Organizations = nil related, err := o.Organizations(mods...).All(ctx, exec) if err != nil { return err } for _, rel := range related { rel.R.EmailContacts = CommsEmailContactSlice{o} } o.R.Organizations = related return nil } // LoadOrganizations loads the commsEmailContact's Organizations into the .R struct func (os CommsEmailContactSlice) LoadOrganizations(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error { if len(os) == 0 { return nil } // since we are changing the columns, we need to check if the original columns were set or add the defaults sq := dialect.SelectQuery{} for _, mod := range mods { mod.Apply(&sq) } if len(sq.SelectList.Columns) == 0 { mods = append(mods, sm.Columns(Organizations.Columns)) } q := os.Organizations(append( mods, sm.Columns(DistrictSubscriptionEmails.Columns.EmailContactAddress.As("related_comms.email_contact.Address")), )...) AddressSlice := []string{} mapper := scan.Mod(scan.StructMapper[*Organization](), func(ctx context.Context, cols []string) (scan.BeforeFunc, func(any, any) error) { return func(row *scan.Row) (any, error) { AddressSlice = append(AddressSlice, *new(string)) row.ScheduleScanByName("related_comms.email_contact.Address", &AddressSlice[len(AddressSlice)-1]) return nil, nil }, func(any, any) error { return nil } }) organizations, err := bob.Allx[bob.SliceTransformer[*Organization, OrganizationSlice]](ctx, exec, q, mapper) if err != nil { return err } for _, o := range os { o.R.Organizations = nil } for _, o := range os { for i, rel := range organizations { if !(o.Address == AddressSlice[i]) { continue } rel.R.EmailContacts = append(rel.R.EmailContacts, o) o.R.Organizations = append(o.R.Organizations, rel) } } return nil } // LoadEmailAddressNotifyEmails loads the commsEmailContact's EmailAddressNotifyEmails into the .R struct func (o *CommsEmailContact) LoadEmailAddressNotifyEmails(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error { if o == nil { return nil } // Reset the relationship o.R.EmailAddressNotifyEmails = nil related, err := o.EmailAddressNotifyEmails(mods...).All(ctx, exec) if err != nil { return err } for _, rel := range related { rel.R.EmailAddressEmailContact = o } o.R.EmailAddressNotifyEmails = related return nil } // LoadEmailAddressNotifyEmails loads the commsEmailContact's EmailAddressNotifyEmails into the .R struct func (os CommsEmailContactSlice) LoadEmailAddressNotifyEmails(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error { if len(os) == 0 { return nil } publicreportNotifyEmails, err := os.EmailAddressNotifyEmails(mods...).All(ctx, exec) if err != nil { return err } for _, o := range os { if o == nil { continue } o.R.EmailAddressNotifyEmails = nil } for _, o := range os { if o == nil { continue } for _, rel := range publicreportNotifyEmails { if !(o.Address == rel.EmailAddress) { continue } rel.R.EmailAddressEmailContact = o o.R.EmailAddressNotifyEmails = append(o.R.EmailAddressNotifyEmails, rel) } } return nil } // LoadEmailAddressNotifyEmailNuisanceOlds loads the commsEmailContact's EmailAddressNotifyEmailNuisanceOlds into the .R struct func (o *CommsEmailContact) LoadEmailAddressNotifyEmailNuisanceOlds(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error { if o == nil { return nil } // Reset the relationship o.R.EmailAddressNotifyEmailNuisanceOlds = nil related, err := o.EmailAddressNotifyEmailNuisanceOlds(mods...).All(ctx, exec) if err != nil { return err } for _, rel := range related { rel.R.EmailAddressEmailContact = o } o.R.EmailAddressNotifyEmailNuisanceOlds = related return nil } // LoadEmailAddressNotifyEmailNuisanceOlds loads the commsEmailContact's EmailAddressNotifyEmailNuisanceOlds into the .R struct func (os CommsEmailContactSlice) LoadEmailAddressNotifyEmailNuisanceOlds(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error { if len(os) == 0 { return nil } publicreportNotifyEmailNuisanceOlds, err := os.EmailAddressNotifyEmailNuisanceOlds(mods...).All(ctx, exec) if err != nil { return err } for _, o := range os { if o == nil { continue } o.R.EmailAddressNotifyEmailNuisanceOlds = nil } for _, o := range os { if o == nil { continue } for _, rel := range publicreportNotifyEmailNuisanceOlds { if !(o.Address == rel.EmailAddress) { continue } rel.R.EmailAddressEmailContact = o o.R.EmailAddressNotifyEmailNuisanceOlds = append(o.R.EmailAddressNotifyEmailNuisanceOlds, rel) } } return nil } // LoadEmailAddressNotifyEmailWaterOlds loads the commsEmailContact's EmailAddressNotifyEmailWaterOlds into the .R struct func (o *CommsEmailContact) LoadEmailAddressNotifyEmailWaterOlds(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error { if o == nil { return nil } // Reset the relationship o.R.EmailAddressNotifyEmailWaterOlds = nil related, err := o.EmailAddressNotifyEmailWaterOlds(mods...).All(ctx, exec) if err != nil { return err } for _, rel := range related { rel.R.EmailAddressEmailContact = o } o.R.EmailAddressNotifyEmailWaterOlds = related return nil } // LoadEmailAddressNotifyEmailWaterOlds loads the commsEmailContact's EmailAddressNotifyEmailWaterOlds into the .R struct func (os CommsEmailContactSlice) LoadEmailAddressNotifyEmailWaterOlds(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error { if len(os) == 0 { return nil } publicreportNotifyEmailWaterOlds, err := os.EmailAddressNotifyEmailWaterOlds(mods...).All(ctx, exec) if err != nil { return err } for _, o := range os { if o == nil { continue } o.R.EmailAddressNotifyEmailWaterOlds = nil } for _, o := range os { if o == nil { continue } for _, rel := range publicreportNotifyEmailWaterOlds { if !(o.Address == rel.EmailAddress) { continue } rel.R.EmailAddressEmailContact = o o.R.EmailAddressNotifyEmailWaterOlds = append(o.R.EmailAddressNotifyEmailWaterOlds, rel) } } return nil } // LoadEmailAddressSubscribeEmails loads the commsEmailContact's EmailAddressSubscribeEmails into the .R struct func (o *CommsEmailContact) LoadEmailAddressSubscribeEmails(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error { if o == nil { return nil } // Reset the relationship o.R.EmailAddressSubscribeEmails = nil related, err := o.EmailAddressSubscribeEmails(mods...).All(ctx, exec) if err != nil { return err } for _, rel := range related { rel.R.EmailAddressEmailContact = o } o.R.EmailAddressSubscribeEmails = related return nil } // LoadEmailAddressSubscribeEmails loads the commsEmailContact's EmailAddressSubscribeEmails into the .R struct func (os CommsEmailContactSlice) LoadEmailAddressSubscribeEmails(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error { if len(os) == 0 { return nil } publicreportSubscribeEmails, err := os.EmailAddressSubscribeEmails(mods...).All(ctx, exec) if err != nil { return err } for _, o := range os { if o == nil { continue } o.R.EmailAddressSubscribeEmails = nil } for _, o := range os { if o == nil { continue } for _, rel := range publicreportSubscribeEmails { if !(o.Address == rel.EmailAddress) { continue } rel.R.EmailAddressEmailContact = o o.R.EmailAddressSubscribeEmails = append(o.R.EmailAddressSubscribeEmails, rel) } } return nil }