// 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"
	"time"

	"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/null"
	"github.com/aarondl/opt/omit"
	"github.com/aarondl/opt/omitnull"
	"github.com/google/uuid"
	enums "source.gleipnir.technology/Gleipnir/nidus-sync/db/enums"
)

// User is an object representing the database table.
type User struct {
	ID                        int32                             `db:"id,pk" `
	ArcgisAccessToken         null.Val[string]                  `db:"arcgis_access_token" `
	ArcgisLicense             null.Val[enums.Arcgislicensetype] `db:"arcgis_license" `
	ArcgisRefreshToken        null.Val[string]                  `db:"arcgis_refresh_token" `
	ArcgisRefreshTokenExpires null.Val[time.Time]               `db:"arcgis_refresh_token_expires" `
	ArcgisRole                null.Val[string]                  `db:"arcgis_role" `
	DisplayName               string                            `db:"display_name" `
	Email                     null.Val[string]                  `db:"email" `
	OrganizationID            int32                             `db:"organization_id" `
	Username                  string                            `db:"username" `
	PasswordHashType          enums.Hashtype                    `db:"password_hash_type" `
	PasswordHash              string                            `db:"password_hash" `
	Role                      enums.Userrole                    `db:"role" `
	Avatar                    null.Val[uuid.UUID]               `db:"avatar" `
	IsActive                  bool                              `db:"is_active" `
	IsDronePilot              bool                              `db:"is_drone_pilot" `
	IsWarrant                 bool                              `db:"is_warrant" `

	R userR `db:"-" `
}

// UserSlice is an alias for a slice of pointers to User.
// This should almost always be used instead of []*User.
type UserSlice []*User

// Users contains methods to work with the user_ table
var Users = psql.NewTablex[*User, UserSlice, *UserSetter]("", "user_", buildUserColumns("user_"))

// UsersQuery is a query on the user_ table
type UsersQuery = *psql.ViewQuery[*User, UserSlice]

// userR is where relationships are stored.
type userR struct {
	CreatorTextJobs                 CommsTextJobSlice            // comms.text_job.text_job_creator_id_fkey
	CommunicationLogEntries         CommunicationLogEntrySlice   // communication_log_entry.communication_log_entry_user__fkey
	CreatorComplianceReportRequests ComplianceReportRequestSlice // compliance_report_request.compliance_report_request_creator_fkey
	CreatorFeatures                 FeatureSlice                 // feature.feature_creator_id_fkey
	CommitterFiles                  FileuploadFileSlice          // fileupload.file.file_committer_fkey
	CreatorFiles                    FileuploadFileSlice          // fileupload.file.file_creator_id_fkey
	FileuploadPool                  FileuploadPoolSlice          // fileupload.pool.pool_creator_id_fkey
	CreatorLeads                    LeadSlice                    // lead.lead_creator_fkey
	ImpersonatorLogImpersonations   LogImpersonationSlice        // log_impersonation.log_impersonation_impersonator_id_fkey
	TargetLogImpersonations         LogImpersonationSlice        // log_impersonation.log_impersonation_target_id_fkey
	CreatorNoteAudios               NoteAudioSlice               // note_audio.note_audio_creator_id_fkey
	DeletorNoteAudios               NoteAudioSlice               // note_audio.note_audio_deletor_id_fkey
	CreatorNoteImages               NoteImageSlice               // note_image.note_image_creator_id_fkey
	DeletorNoteImages               NoteImageSlice               // note_image.note_image_deletor_id_fkey
	UserNotifications               NotificationSlice            // notification.notification_user_id_fkey
	ReviewerNuisanceOlds            PublicreportNuisanceOldSlice // publicreport.nuisance_old.nuisance_reviewer_id_fkey
	ReviewerReports                 PublicreportReportSlice      // publicreport.report.report_reviewer_id_fkey
	UserReportLogs                  PublicreportReportLogSlice   // publicreport.report_log.report_log_user_id_fkey
	ReviewerWaterOlds               PublicreportWaterOldSlice    // publicreport.water_old.water_reviewer_id_fkey
	CreatorReportTexts              ReportTextSlice              // report_text.report_text_creator_id_fkey
	CreatorResidents                ResidentSlice                // resident.resident_creator_fkey
	CreatorReviewTasks              ReviewTaskSlice              // review_task.review_task_creator_id_fkey
	ReviewerReviewTasks             ReviewTaskSlice              // review_task.review_task_reviewer_id_fkey
	AddressorSignals                SignalSlice                  // signal.signal_addressor_fkey
	CreatorSignals                  SignalSlice                  // signal.signal_creator_fkey
	CreatorSites                    SiteSlice                    // site.site_creator_id_fkey
	Organization                    *Organization                // user_.user__organization_id_fkey
}

func buildUserColumns(alias string) userColumns {
	return userColumns{
		ColumnsExpr: expr.NewColumnsExpr(
			"id", "arcgis_access_token", "arcgis_license", "arcgis_refresh_token", "arcgis_refresh_token_expires", "arcgis_role", "display_name", "email", "organization_id", "username", "password_hash_type", "password_hash", "role", "avatar", "is_active", "is_drone_pilot", "is_warrant",
		).WithParent("user_"),
		tableAlias:                alias,
		ID:                        psql.Quote(alias, "id"),
		ArcgisAccessToken:         psql.Quote(alias, "arcgis_access_token"),
		ArcgisLicense:             psql.Quote(alias, "arcgis_license"),
		ArcgisRefreshToken:        psql.Quote(alias, "arcgis_refresh_token"),
		ArcgisRefreshTokenExpires: psql.Quote(alias, "arcgis_refresh_token_expires"),
		ArcgisRole:                psql.Quote(alias, "arcgis_role"),
		DisplayName:               psql.Quote(alias, "display_name"),
		Email:                     psql.Quote(alias, "email"),
		OrganizationID:            psql.Quote(alias, "organization_id"),
		Username:                  psql.Quote(alias, "username"),
		PasswordHashType:          psql.Quote(alias, "password_hash_type"),
		PasswordHash:              psql.Quote(alias, "password_hash"),
		Role:                      psql.Quote(alias, "role"),
		Avatar:                    psql.Quote(alias, "avatar"),
		IsActive:                  psql.Quote(alias, "is_active"),
		IsDronePilot:              psql.Quote(alias, "is_drone_pilot"),
		IsWarrant:                 psql.Quote(alias, "is_warrant"),
	}
}

type userColumns struct {
	expr.ColumnsExpr
	tableAlias                string
	ID                        psql.Expression
	ArcgisAccessToken         psql.Expression
	ArcgisLicense             psql.Expression
	ArcgisRefreshToken        psql.Expression
	ArcgisRefreshTokenExpires psql.Expression
	ArcgisRole                psql.Expression
	DisplayName               psql.Expression
	Email                     psql.Expression
	OrganizationID            psql.Expression
	Username                  psql.Expression
	PasswordHashType          psql.Expression
	PasswordHash              psql.Expression
	Role                      psql.Expression
	Avatar                    psql.Expression
	IsActive                  psql.Expression
	IsDronePilot              psql.Expression
	IsWarrant                 psql.Expression
}

func (c userColumns) Alias() string {
	return c.tableAlias
}

func (userColumns) AliasedAs(alias string) userColumns {
	return buildUserColumns(alias)
}

// UserSetter is used for insert/upsert/update operations
// All values are optional, and do not have to be set
// Generated columns are not included
type UserSetter struct {
	ID                        omit.Val[int32]                       `db:"id,pk" `
	ArcgisAccessToken         omitnull.Val[string]                  `db:"arcgis_access_token" `
	ArcgisLicense             omitnull.Val[enums.Arcgislicensetype] `db:"arcgis_license" `
	ArcgisRefreshToken        omitnull.Val[string]                  `db:"arcgis_refresh_token" `
	ArcgisRefreshTokenExpires omitnull.Val[time.Time]               `db:"arcgis_refresh_token_expires" `
	ArcgisRole                omitnull.Val[string]                  `db:"arcgis_role" `
	DisplayName               omit.Val[string]                      `db:"display_name" `
	Email                     omitnull.Val[string]                  `db:"email" `
	OrganizationID            omit.Val[int32]                       `db:"organization_id" `
	Username                  omit.Val[string]                      `db:"username" `
	PasswordHashType          omit.Val[enums.Hashtype]              `db:"password_hash_type" `
	PasswordHash              omit.Val[string]                      `db:"password_hash" `
	Role                      omit.Val[enums.Userrole]              `db:"role" `
	Avatar                    omitnull.Val[uuid.UUID]               `db:"avatar" `
	IsActive                  omit.Val[bool]                        `db:"is_active" `
	IsDronePilot              omit.Val[bool]                        `db:"is_drone_pilot" `
	IsWarrant                 omit.Val[bool]                        `db:"is_warrant" `
}

func (s UserSetter) SetColumns() []string {
	vals := make([]string, 0, 17)
	if s.ID.IsValue() {
		vals = append(vals, "id")
	}
	if !s.ArcgisAccessToken.IsUnset() {
		vals = append(vals, "arcgis_access_token")
	}
	if !s.ArcgisLicense.IsUnset() {
		vals = append(vals, "arcgis_license")
	}
	if !s.ArcgisRefreshToken.IsUnset() {
		vals = append(vals, "arcgis_refresh_token")
	}
	if !s.ArcgisRefreshTokenExpires.IsUnset() {
		vals = append(vals, "arcgis_refresh_token_expires")
	}
	if !s.ArcgisRole.IsUnset() {
		vals = append(vals, "arcgis_role")
	}
	if s.DisplayName.IsValue() {
		vals = append(vals, "display_name")
	}
	if !s.Email.IsUnset() {
		vals = append(vals, "email")
	}
	if s.OrganizationID.IsValue() {
		vals = append(vals, "organization_id")
	}
	if s.Username.IsValue() {
		vals = append(vals, "username")
	}
	if s.PasswordHashType.IsValue() {
		vals = append(vals, "password_hash_type")
	}
	if s.PasswordHash.IsValue() {
		vals = append(vals, "password_hash")
	}
	if s.Role.IsValue() {
		vals = append(vals, "role")
	}
	if !s.Avatar.IsUnset() {
		vals = append(vals, "avatar")
	}
	if s.IsActive.IsValue() {
		vals = append(vals, "is_active")
	}
	if s.IsDronePilot.IsValue() {
		vals = append(vals, "is_drone_pilot")
	}
	if s.IsWarrant.IsValue() {
		vals = append(vals, "is_warrant")
	}
	return vals
}

func (s UserSetter) Overwrite(t *User) {
	if s.ID.IsValue() {
		t.ID = s.ID.MustGet()
	}
	if !s.ArcgisAccessToken.IsUnset() {
		t.ArcgisAccessToken = s.ArcgisAccessToken.MustGetNull()
	}
	if !s.ArcgisLicense.IsUnset() {
		t.ArcgisLicense = s.ArcgisLicense.MustGetNull()
	}
	if !s.ArcgisRefreshToken.IsUnset() {
		t.ArcgisRefreshToken = s.ArcgisRefreshToken.MustGetNull()
	}
	if !s.ArcgisRefreshTokenExpires.IsUnset() {
		t.ArcgisRefreshTokenExpires = s.ArcgisRefreshTokenExpires.MustGetNull()
	}
	if !s.ArcgisRole.IsUnset() {
		t.ArcgisRole = s.ArcgisRole.MustGetNull()
	}
	if s.DisplayName.IsValue() {
		t.DisplayName = s.DisplayName.MustGet()
	}
	if !s.Email.IsUnset() {
		t.Email = s.Email.MustGetNull()
	}
	if s.OrganizationID.IsValue() {
		t.OrganizationID = s.OrganizationID.MustGet()
	}
	if s.Username.IsValue() {
		t.Username = s.Username.MustGet()
	}
	if s.PasswordHashType.IsValue() {
		t.PasswordHashType = s.PasswordHashType.MustGet()
	}
	if s.PasswordHash.IsValue() {
		t.PasswordHash = s.PasswordHash.MustGet()
	}
	if s.Role.IsValue() {
		t.Role = s.Role.MustGet()
	}
	if !s.Avatar.IsUnset() {
		t.Avatar = s.Avatar.MustGetNull()
	}
	if s.IsActive.IsValue() {
		t.IsActive = s.IsActive.MustGet()
	}
	if s.IsDronePilot.IsValue() {
		t.IsDronePilot = s.IsDronePilot.MustGet()
	}
	if s.IsWarrant.IsValue() {
		t.IsWarrant = s.IsWarrant.MustGet()
	}
}

func (s *UserSetter) Apply(q *dialect.InsertQuery) {
	q.AppendHooks(func(ctx context.Context, exec bob.Executor) (context.Context, error) {
		return Users.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, 17)
		if s.ID.IsValue() {
			vals[0] = psql.Arg(s.ID.MustGet())
		} else {
			vals[0] = psql.Raw("DEFAULT")
		}

		if !s.ArcgisAccessToken.IsUnset() {
			vals[1] = psql.Arg(s.ArcgisAccessToken.MustGetNull())
		} else {
			vals[1] = psql.Raw("DEFAULT")
		}

		if !s.ArcgisLicense.IsUnset() {
			vals[2] = psql.Arg(s.ArcgisLicense.MustGetNull())
		} else {
			vals[2] = psql.Raw("DEFAULT")
		}

		if !s.ArcgisRefreshToken.IsUnset() {
			vals[3] = psql.Arg(s.ArcgisRefreshToken.MustGetNull())
		} else {
			vals[3] = psql.Raw("DEFAULT")
		}

		if !s.ArcgisRefreshTokenExpires.IsUnset() {
			vals[4] = psql.Arg(s.ArcgisRefreshTokenExpires.MustGetNull())
		} else {
			vals[4] = psql.Raw("DEFAULT")
		}

		if !s.ArcgisRole.IsUnset() {
			vals[5] = psql.Arg(s.ArcgisRole.MustGetNull())
		} else {
			vals[5] = psql.Raw("DEFAULT")
		}

		if s.DisplayName.IsValue() {
			vals[6] = psql.Arg(s.DisplayName.MustGet())
		} else {
			vals[6] = psql.Raw("DEFAULT")
		}

		if !s.Email.IsUnset() {
			vals[7] = psql.Arg(s.Email.MustGetNull())
		} else {
			vals[7] = psql.Raw("DEFAULT")
		}

		if s.OrganizationID.IsValue() {
			vals[8] = psql.Arg(s.OrganizationID.MustGet())
		} else {
			vals[8] = psql.Raw("DEFAULT")
		}

		if s.Username.IsValue() {
			vals[9] = psql.Arg(s.Username.MustGet())
		} else {
			vals[9] = psql.Raw("DEFAULT")
		}

		if s.PasswordHashType.IsValue() {
			vals[10] = psql.Arg(s.PasswordHashType.MustGet())
		} else {
			vals[10] = psql.Raw("DEFAULT")
		}

		if s.PasswordHash.IsValue() {
			vals[11] = psql.Arg(s.PasswordHash.MustGet())
		} else {
			vals[11] = psql.Raw("DEFAULT")
		}

		if s.Role.IsValue() {
			vals[12] = psql.Arg(s.Role.MustGet())
		} else {
			vals[12] = psql.Raw("DEFAULT")
		}

		if !s.Avatar.IsUnset() {
			vals[13] = psql.Arg(s.Avatar.MustGetNull())
		} else {
			vals[13] = psql.Raw("DEFAULT")
		}

		if s.IsActive.IsValue() {
			vals[14] = psql.Arg(s.IsActive.MustGet())
		} else {
			vals[14] = psql.Raw("DEFAULT")
		}

		if s.IsDronePilot.IsValue() {
			vals[15] = psql.Arg(s.IsDronePilot.MustGet())
		} else {
			vals[15] = psql.Raw("DEFAULT")
		}

		if s.IsWarrant.IsValue() {
			vals[16] = psql.Arg(s.IsWarrant.MustGet())
		} else {
			vals[16] = psql.Raw("DEFAULT")
		}

		return bob.ExpressSlice(ctx, w, d, start, vals, "", ", ", "")
	}))
}

func (s UserSetter) UpdateMod() bob.Mod[*dialect.UpdateQuery] {
	return um.Set(s.Expressions()...)
}

func (s UserSetter) Expressions(prefix ...string) []bob.Expression {
	exprs := make([]bob.Expression, 0, 17)

	if s.ID.IsValue() {
		exprs = append(exprs, expr.Join{Sep: " = ", Exprs: []bob.Expression{
			psql.Quote(append(prefix, "id")...),
			psql.Arg(s.ID),
		}})
	}

	if !s.ArcgisAccessToken.IsUnset() {
		exprs = append(exprs, expr.Join{Sep: " = ", Exprs: []bob.Expression{
			psql.Quote(append(prefix, "arcgis_access_token")...),
			psql.Arg(s.ArcgisAccessToken),
		}})
	}

	if !s.ArcgisLicense.IsUnset() {
		exprs = append(exprs, expr.Join{Sep: " = ", Exprs: []bob.Expression{
			psql.Quote(append(prefix, "arcgis_license")...),
			psql.Arg(s.ArcgisLicense),
		}})
	}

	if !s.ArcgisRefreshToken.IsUnset() {
		exprs = append(exprs, expr.Join{Sep: " = ", Exprs: []bob.Expression{
			psql.Quote(append(prefix, "arcgis_refresh_token")...),
			psql.Arg(s.ArcgisRefreshToken),
		}})
	}

	if !s.ArcgisRefreshTokenExpires.IsUnset() {
		exprs = append(exprs, expr.Join{Sep: " = ", Exprs: []bob.Expression{
			psql.Quote(append(prefix, "arcgis_refresh_token_expires")...),
			psql.Arg(s.ArcgisRefreshTokenExpires),
		}})
	}

	if !s.ArcgisRole.IsUnset() {
		exprs = append(exprs, expr.Join{Sep: " = ", Exprs: []bob.Expression{
			psql.Quote(append(prefix, "arcgis_role")...),
			psql.Arg(s.ArcgisRole),
		}})
	}

	if s.DisplayName.IsValue() {
		exprs = append(exprs, expr.Join{Sep: " = ", Exprs: []bob.Expression{
			psql.Quote(append(prefix, "display_name")...),
			psql.Arg(s.DisplayName),
		}})
	}

	if !s.Email.IsUnset() {
		exprs = append(exprs, expr.Join{Sep: " = ", Exprs: []bob.Expression{
			psql.Quote(append(prefix, "email")...),
			psql.Arg(s.Email),
		}})
	}

	if s.OrganizationID.IsValue() {
		exprs = append(exprs, expr.Join{Sep: " = ", Exprs: []bob.Expression{
			psql.Quote(append(prefix, "organization_id")...),
			psql.Arg(s.OrganizationID),
		}})
	}

	if s.Username.IsValue() {
		exprs = append(exprs, expr.Join{Sep: " = ", Exprs: []bob.Expression{
			psql.Quote(append(prefix, "username")...),
			psql.Arg(s.Username),
		}})
	}

	if s.PasswordHashType.IsValue() {
		exprs = append(exprs, expr.Join{Sep: " = ", Exprs: []bob.Expression{
			psql.Quote(append(prefix, "password_hash_type")...),
			psql.Arg(s.PasswordHashType),
		}})
	}

	if s.PasswordHash.IsValue() {
		exprs = append(exprs, expr.Join{Sep: " = ", Exprs: []bob.Expression{
			psql.Quote(append(prefix, "password_hash")...),
			psql.Arg(s.PasswordHash),
		}})
	}

	if s.Role.IsValue() {
		exprs = append(exprs, expr.Join{Sep: " = ", Exprs: []bob.Expression{
			psql.Quote(append(prefix, "role")...),
			psql.Arg(s.Role),
		}})
	}

	if !s.Avatar.IsUnset() {
		exprs = append(exprs, expr.Join{Sep: " = ", Exprs: []bob.Expression{
			psql.Quote(append(prefix, "avatar")...),
			psql.Arg(s.Avatar),
		}})
	}

	if s.IsActive.IsValue() {
		exprs = append(exprs, expr.Join{Sep: " = ", Exprs: []bob.Expression{
			psql.Quote(append(prefix, "is_active")...),
			psql.Arg(s.IsActive),
		}})
	}

	if s.IsDronePilot.IsValue() {
		exprs = append(exprs, expr.Join{Sep: " = ", Exprs: []bob.Expression{
			psql.Quote(append(prefix, "is_drone_pilot")...),
			psql.Arg(s.IsDronePilot),
		}})
	}

	if s.IsWarrant.IsValue() {
		exprs = append(exprs, expr.Join{Sep: " = ", Exprs: []bob.Expression{
			psql.Quote(append(prefix, "is_warrant")...),
			psql.Arg(s.IsWarrant),
		}})
	}

	return exprs
}

// FindUser retrieves a single record by primary key
// If cols is empty Find will return all columns.
func FindUser(ctx context.Context, exec bob.Executor, IDPK int32, cols ...string) (*User, error) {
	if len(cols) == 0 {
		return Users.Query(
			sm.Where(Users.Columns.ID.EQ(psql.Arg(IDPK))),
		).One(ctx, exec)
	}

	return Users.Query(
		sm.Where(Users.Columns.ID.EQ(psql.Arg(IDPK))),
		sm.Columns(Users.Columns.Only(cols...)),
	).One(ctx, exec)
}

// UserExists checks the presence of a single record by primary key
func UserExists(ctx context.Context, exec bob.Executor, IDPK int32) (bool, error) {
	return Users.Query(
		sm.Where(Users.Columns.ID.EQ(psql.Arg(IDPK))),
	).Exists(ctx, exec)
}

// AfterQueryHook is called after User is retrieved from the database
func (o *User) AfterQueryHook(ctx context.Context, exec bob.Executor, queryType bob.QueryType) error {
	var err error

	switch queryType {
	case bob.QueryTypeSelect:
		ctx, err = Users.AfterSelectHooks.RunHooks(ctx, exec, UserSlice{o})
	case bob.QueryTypeInsert:
		ctx, err = Users.AfterInsertHooks.RunHooks(ctx, exec, UserSlice{o})
	case bob.QueryTypeUpdate:
		ctx, err = Users.AfterUpdateHooks.RunHooks(ctx, exec, UserSlice{o})
	case bob.QueryTypeDelete:
		ctx, err = Users.AfterDeleteHooks.RunHooks(ctx, exec, UserSlice{o})
	}

	return err
}

// primaryKeyVals returns the primary key values of the User
func (o *User) primaryKeyVals() bob.Expression {
	return psql.Arg(o.ID)
}

func (o *User) pkEQ() dialect.Expression {
	return psql.Quote("user_", "id").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 User
func (o *User) Update(ctx context.Context, exec bob.Executor, s *UserSetter) error {
	v, err := Users.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 User record with an executor
func (o *User) Delete(ctx context.Context, exec bob.Executor) error {
	_, err := Users.Delete(dm.Where(o.pkEQ())).Exec(ctx, exec)
	return err
}

// Reload refreshes the User using the executor
func (o *User) Reload(ctx context.Context, exec bob.Executor) error {
	o2, err := Users.Query(
		sm.Where(Users.Columns.ID.EQ(psql.Arg(o.ID))),
	).One(ctx, exec)
	if err != nil {
		return err
	}
	o2.R = o.R
	*o = *o2

	return nil
}

// AfterQueryHook is called after UserSlice is retrieved from the database
func (o UserSlice) AfterQueryHook(ctx context.Context, exec bob.Executor, queryType bob.QueryType) error {
	var err error

	switch queryType {
	case bob.QueryTypeSelect:
		ctx, err = Users.AfterSelectHooks.RunHooks(ctx, exec, o)
	case bob.QueryTypeInsert:
		ctx, err = Users.AfterInsertHooks.RunHooks(ctx, exec, o)
	case bob.QueryTypeUpdate:
		ctx, err = Users.AfterUpdateHooks.RunHooks(ctx, exec, o)
	case bob.QueryTypeDelete:
		ctx, err = Users.AfterDeleteHooks.RunHooks(ctx, exec, o)
	}

	return err
}

func (o UserSlice) pkIN() dialect.Expression {
	if len(o) == 0 {
		return psql.Raw("NULL")
	}

	return psql.Quote("user_", "id").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 UserSlice) copyMatchingRows(from ...*User) {
	for i, old := range o {
		for _, new := range from {
			if new.ID != old.ID {
				continue
			}
			new.R = old.R
			o[i] = new
			break
		}
	}
}

// UpdateMod modifies an update query with "WHERE primary_key IN (o...)"
func (o UserSlice) 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 Users.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 *User:
				o.copyMatchingRows(retrieved)
			case []*User:
				o.copyMatchingRows(retrieved...)
			case UserSlice:
				o.copyMatchingRows(retrieved...)
			default:
				// If the retrieved value is not a User or a slice of User
				// then run the AfterUpdateHooks on the slice
				_, err = Users.AfterUpdateHooks.RunHooks(ctx, exec, o)
			}

			return err
		}))

		q.AppendWhere(o.pkIN())
	})
}

// DeleteMod modifies an delete query with "WHERE primary_key IN (o...)"
func (o UserSlice) 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 Users.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 *User:
				o.copyMatchingRows(retrieved)
			case []*User:
				o.copyMatchingRows(retrieved...)
			case UserSlice:
				o.copyMatchingRows(retrieved...)
			default:
				// If the retrieved value is not a User or a slice of User
				// then run the AfterDeleteHooks on the slice
				_, err = Users.AfterDeleteHooks.RunHooks(ctx, exec, o)
			}

			return err
		}))

		q.AppendWhere(o.pkIN())
	})
}

func (o UserSlice) UpdateAll(ctx context.Context, exec bob.Executor, vals UserSetter) error {
	if len(o) == 0 {
		return nil
	}

	_, err := Users.Update(vals.UpdateMod(), o.UpdateMod()).All(ctx, exec)
	return err
}

func (o UserSlice) DeleteAll(ctx context.Context, exec bob.Executor) error {
	if len(o) == 0 {
		return nil
	}

	_, err := Users.Delete(o.DeleteMod()).Exec(ctx, exec)
	return err
}

func (o UserSlice) ReloadAll(ctx context.Context, exec bob.Executor) error {
	if len(o) == 0 {
		return nil
	}

	o2, err := Users.Query(sm.Where(o.pkIN())).All(ctx, exec)
	if err != nil {
		return err
	}

	o.copyMatchingRows(o2...)

	return nil
}

// CreatorTextJobs starts a query for related objects on comms.text_job
func (o *User) CreatorTextJobs(mods ...bob.Mod[*dialect.SelectQuery]) CommsTextJobsQuery {
	return CommsTextJobs.Query(append(mods,
		sm.Where(CommsTextJobs.Columns.CreatorID.EQ(psql.Arg(o.ID))),
	)...)
}

func (os UserSlice) CreatorTextJobs(mods ...bob.Mod[*dialect.SelectQuery]) CommsTextJobsQuery {
	pkID := make(pgtypes.Array[int32], 0, len(os))
	for _, o := range os {
		if o == nil {
			continue
		}
		pkID = append(pkID, o.ID)
	}
	PKArgExpr := psql.Select(sm.Columns(
		psql.F("unnest", psql.Cast(psql.Arg(pkID), "integer[]")),
	))

	return CommsTextJobs.Query(append(mods,
		sm.Where(psql.Group(CommsTextJobs.Columns.CreatorID).OP("IN", PKArgExpr)),
	)...)
}

// CommunicationLogEntries starts a query for related objects on communication_log_entry
func (o *User) CommunicationLogEntries(mods ...bob.Mod[*dialect.SelectQuery]) CommunicationLogEntriesQuery {
	return CommunicationLogEntries.Query(append(mods,
		sm.Where(CommunicationLogEntries.Columns.User.EQ(psql.Arg(o.ID))),
	)...)
}

func (os UserSlice) CommunicationLogEntries(mods ...bob.Mod[*dialect.SelectQuery]) CommunicationLogEntriesQuery {
	pkID := make(pgtypes.Array[int32], 0, len(os))
	for _, o := range os {
		if o == nil {
			continue
		}
		pkID = append(pkID, o.ID)
	}
	PKArgExpr := psql.Select(sm.Columns(
		psql.F("unnest", psql.Cast(psql.Arg(pkID), "integer[]")),
	))

	return CommunicationLogEntries.Query(append(mods,
		sm.Where(psql.Group(CommunicationLogEntries.Columns.User).OP("IN", PKArgExpr)),
	)...)
}

// CreatorComplianceReportRequests starts a query for related objects on compliance_report_request
func (o *User) CreatorComplianceReportRequests(mods ...bob.Mod[*dialect.SelectQuery]) ComplianceReportRequestsQuery {
	return ComplianceReportRequests.Query(append(mods,
		sm.Where(ComplianceReportRequests.Columns.Creator.EQ(psql.Arg(o.ID))),
	)...)
}

func (os UserSlice) CreatorComplianceReportRequests(mods ...bob.Mod[*dialect.SelectQuery]) ComplianceReportRequestsQuery {
	pkID := make(pgtypes.Array[int32], 0, len(os))
	for _, o := range os {
		if o == nil {
			continue
		}
		pkID = append(pkID, o.ID)
	}
	PKArgExpr := psql.Select(sm.Columns(
		psql.F("unnest", psql.Cast(psql.Arg(pkID), "integer[]")),
	))

	return ComplianceReportRequests.Query(append(mods,
		sm.Where(psql.Group(ComplianceReportRequests.Columns.Creator).OP("IN", PKArgExpr)),
	)...)
}

// CreatorFeatures starts a query for related objects on feature
func (o *User) CreatorFeatures(mods ...bob.Mod[*dialect.SelectQuery]) FeaturesQuery {
	return Features.Query(append(mods,
		sm.Where(Features.Columns.CreatorID.EQ(psql.Arg(o.ID))),
	)...)
}

func (os UserSlice) CreatorFeatures(mods ...bob.Mod[*dialect.SelectQuery]) FeaturesQuery {
	pkID := make(pgtypes.Array[int32], 0, len(os))
	for _, o := range os {
		if o == nil {
			continue
		}
		pkID = append(pkID, o.ID)
	}
	PKArgExpr := psql.Select(sm.Columns(
		psql.F("unnest", psql.Cast(psql.Arg(pkID), "integer[]")),
	))

	return Features.Query(append(mods,
		sm.Where(psql.Group(Features.Columns.CreatorID).OP("IN", PKArgExpr)),
	)...)
}

// CommitterFiles starts a query for related objects on fileupload.file
func (o *User) CommitterFiles(mods ...bob.Mod[*dialect.SelectQuery]) FileuploadFilesQuery {
	return FileuploadFiles.Query(append(mods,
		sm.Where(FileuploadFiles.Columns.Committer.EQ(psql.Arg(o.ID))),
	)...)
}

func (os UserSlice) CommitterFiles(mods ...bob.Mod[*dialect.SelectQuery]) FileuploadFilesQuery {
	pkID := make(pgtypes.Array[int32], 0, len(os))
	for _, o := range os {
		if o == nil {
			continue
		}
		pkID = append(pkID, o.ID)
	}
	PKArgExpr := psql.Select(sm.Columns(
		psql.F("unnest", psql.Cast(psql.Arg(pkID), "integer[]")),
	))

	return FileuploadFiles.Query(append(mods,
		sm.Where(psql.Group(FileuploadFiles.Columns.Committer).OP("IN", PKArgExpr)),
	)...)
}

// CreatorFiles starts a query for related objects on fileupload.file
func (o *User) CreatorFiles(mods ...bob.Mod[*dialect.SelectQuery]) FileuploadFilesQuery {
	return FileuploadFiles.Query(append(mods,
		sm.Where(FileuploadFiles.Columns.CreatorID.EQ(psql.Arg(o.ID))),
	)...)
}

func (os UserSlice) CreatorFiles(mods ...bob.Mod[*dialect.SelectQuery]) FileuploadFilesQuery {
	pkID := make(pgtypes.Array[int32], 0, len(os))
	for _, o := range os {
		if o == nil {
			continue
		}
		pkID = append(pkID, o.ID)
	}
	PKArgExpr := psql.Select(sm.Columns(
		psql.F("unnest", psql.Cast(psql.Arg(pkID), "integer[]")),
	))

	return FileuploadFiles.Query(append(mods,
		sm.Where(psql.Group(FileuploadFiles.Columns.CreatorID).OP("IN", PKArgExpr)),
	)...)
}

// FileuploadPool starts a query for related objects on fileupload.pool
func (o *User) FileuploadPool(mods ...bob.Mod[*dialect.SelectQuery]) FileuploadPoolsQuery {
	return FileuploadPools.Query(append(mods,
		sm.Where(FileuploadPools.Columns.CreatorID.EQ(psql.Arg(o.ID))),
	)...)
}

func (os UserSlice) FileuploadPool(mods ...bob.Mod[*dialect.SelectQuery]) FileuploadPoolsQuery {
	pkID := make(pgtypes.Array[int32], 0, len(os))
	for _, o := range os {
		if o == nil {
			continue
		}
		pkID = append(pkID, o.ID)
	}
	PKArgExpr := psql.Select(sm.Columns(
		psql.F("unnest", psql.Cast(psql.Arg(pkID), "integer[]")),
	))

	return FileuploadPools.Query(append(mods,
		sm.Where(psql.Group(FileuploadPools.Columns.CreatorID).OP("IN", PKArgExpr)),
	)...)
}

// CreatorLeads starts a query for related objects on lead
func (o *User) CreatorLeads(mods ...bob.Mod[*dialect.SelectQuery]) LeadsQuery {
	return Leads.Query(append(mods,
		sm.Where(Leads.Columns.Creator.EQ(psql.Arg(o.ID))),
	)...)
}

func (os UserSlice) CreatorLeads(mods ...bob.Mod[*dialect.SelectQuery]) LeadsQuery {
	pkID := make(pgtypes.Array[int32], 0, len(os))
	for _, o := range os {
		if o == nil {
			continue
		}
		pkID = append(pkID, o.ID)
	}
	PKArgExpr := psql.Select(sm.Columns(
		psql.F("unnest", psql.Cast(psql.Arg(pkID), "integer[]")),
	))

	return Leads.Query(append(mods,
		sm.Where(psql.Group(Leads.Columns.Creator).OP("IN", PKArgExpr)),
	)...)
}

// ImpersonatorLogImpersonations starts a query for related objects on log_impersonation
func (o *User) ImpersonatorLogImpersonations(mods ...bob.Mod[*dialect.SelectQuery]) LogImpersonationsQuery {
	return LogImpersonations.Query(append(mods,
		sm.Where(LogImpersonations.Columns.ImpersonatorID.EQ(psql.Arg(o.ID))),
	)...)
}

func (os UserSlice) ImpersonatorLogImpersonations(mods ...bob.Mod[*dialect.SelectQuery]) LogImpersonationsQuery {
	pkID := make(pgtypes.Array[int32], 0, len(os))
	for _, o := range os {
		if o == nil {
			continue
		}
		pkID = append(pkID, o.ID)
	}
	PKArgExpr := psql.Select(sm.Columns(
		psql.F("unnest", psql.Cast(psql.Arg(pkID), "integer[]")),
	))

	return LogImpersonations.Query(append(mods,
		sm.Where(psql.Group(LogImpersonations.Columns.ImpersonatorID).OP("IN", PKArgExpr)),
	)...)
}

// TargetLogImpersonations starts a query for related objects on log_impersonation
func (o *User) TargetLogImpersonations(mods ...bob.Mod[*dialect.SelectQuery]) LogImpersonationsQuery {
	return LogImpersonations.Query(append(mods,
		sm.Where(LogImpersonations.Columns.TargetID.EQ(psql.Arg(o.ID))),
	)...)
}

func (os UserSlice) TargetLogImpersonations(mods ...bob.Mod[*dialect.SelectQuery]) LogImpersonationsQuery {
	pkID := make(pgtypes.Array[int32], 0, len(os))
	for _, o := range os {
		if o == nil {
			continue
		}
		pkID = append(pkID, o.ID)
	}
	PKArgExpr := psql.Select(sm.Columns(
		psql.F("unnest", psql.Cast(psql.Arg(pkID), "integer[]")),
	))

	return LogImpersonations.Query(append(mods,
		sm.Where(psql.Group(LogImpersonations.Columns.TargetID).OP("IN", PKArgExpr)),
	)...)
}

// CreatorNoteAudios starts a query for related objects on note_audio
func (o *User) CreatorNoteAudios(mods ...bob.Mod[*dialect.SelectQuery]) NoteAudiosQuery {
	return NoteAudios.Query(append(mods,
		sm.Where(NoteAudios.Columns.CreatorID.EQ(psql.Arg(o.ID))),
	)...)
}

func (os UserSlice) CreatorNoteAudios(mods ...bob.Mod[*dialect.SelectQuery]) NoteAudiosQuery {
	pkID := make(pgtypes.Array[int32], 0, len(os))
	for _, o := range os {
		if o == nil {
			continue
		}
		pkID = append(pkID, o.ID)
	}
	PKArgExpr := psql.Select(sm.Columns(
		psql.F("unnest", psql.Cast(psql.Arg(pkID), "integer[]")),
	))

	return NoteAudios.Query(append(mods,
		sm.Where(psql.Group(NoteAudios.Columns.CreatorID).OP("IN", PKArgExpr)),
	)...)
}

// DeletorNoteAudios starts a query for related objects on note_audio
func (o *User) DeletorNoteAudios(mods ...bob.Mod[*dialect.SelectQuery]) NoteAudiosQuery {
	return NoteAudios.Query(append(mods,
		sm.Where(NoteAudios.Columns.DeletorID.EQ(psql.Arg(o.ID))),
	)...)
}

func (os UserSlice) DeletorNoteAudios(mods ...bob.Mod[*dialect.SelectQuery]) NoteAudiosQuery {
	pkID := make(pgtypes.Array[int32], 0, len(os))
	for _, o := range os {
		if o == nil {
			continue
		}
		pkID = append(pkID, o.ID)
	}
	PKArgExpr := psql.Select(sm.Columns(
		psql.F("unnest", psql.Cast(psql.Arg(pkID), "integer[]")),
	))

	return NoteAudios.Query(append(mods,
		sm.Where(psql.Group(NoteAudios.Columns.DeletorID).OP("IN", PKArgExpr)),
	)...)
}

// CreatorNoteImages starts a query for related objects on note_image
func (o *User) CreatorNoteImages(mods ...bob.Mod[*dialect.SelectQuery]) NoteImagesQuery {
	return NoteImages.Query(append(mods,
		sm.Where(NoteImages.Columns.CreatorID.EQ(psql.Arg(o.ID))),
	)...)
}

func (os UserSlice) CreatorNoteImages(mods ...bob.Mod[*dialect.SelectQuery]) NoteImagesQuery {
	pkID := make(pgtypes.Array[int32], 0, len(os))
	for _, o := range os {
		if o == nil {
			continue
		}
		pkID = append(pkID, o.ID)
	}
	PKArgExpr := psql.Select(sm.Columns(
		psql.F("unnest", psql.Cast(psql.Arg(pkID), "integer[]")),
	))

	return NoteImages.Query(append(mods,
		sm.Where(psql.Group(NoteImages.Columns.CreatorID).OP("IN", PKArgExpr)),
	)...)
}

// DeletorNoteImages starts a query for related objects on note_image
func (o *User) DeletorNoteImages(mods ...bob.Mod[*dialect.SelectQuery]) NoteImagesQuery {
	return NoteImages.Query(append(mods,
		sm.Where(NoteImages.Columns.DeletorID.EQ(psql.Arg(o.ID))),
	)...)
}

func (os UserSlice) DeletorNoteImages(mods ...bob.Mod[*dialect.SelectQuery]) NoteImagesQuery {
	pkID := make(pgtypes.Array[int32], 0, len(os))
	for _, o := range os {
		if o == nil {
			continue
		}
		pkID = append(pkID, o.ID)
	}
	PKArgExpr := psql.Select(sm.Columns(
		psql.F("unnest", psql.Cast(psql.Arg(pkID), "integer[]")),
	))

	return NoteImages.Query(append(mods,
		sm.Where(psql.Group(NoteImages.Columns.DeletorID).OP("IN", PKArgExpr)),
	)...)
}

// UserNotifications starts a query for related objects on notification
func (o *User) UserNotifications(mods ...bob.Mod[*dialect.SelectQuery]) NotificationsQuery {
	return Notifications.Query(append(mods,
		sm.Where(Notifications.Columns.UserID.EQ(psql.Arg(o.ID))),
	)...)
}

func (os UserSlice) UserNotifications(mods ...bob.Mod[*dialect.SelectQuery]) NotificationsQuery {
	pkID := make(pgtypes.Array[int32], 0, len(os))
	for _, o := range os {
		if o == nil {
			continue
		}
		pkID = append(pkID, o.ID)
	}
	PKArgExpr := psql.Select(sm.Columns(
		psql.F("unnest", psql.Cast(psql.Arg(pkID), "integer[]")),
	))

	return Notifications.Query(append(mods,
		sm.Where(psql.Group(Notifications.Columns.UserID).OP("IN", PKArgExpr)),
	)...)
}

// ReviewerNuisanceOlds starts a query for related objects on publicreport.nuisance_old
func (o *User) ReviewerNuisanceOlds(mods ...bob.Mod[*dialect.SelectQuery]) PublicreportNuisanceOldsQuery {
	return PublicreportNuisanceOlds.Query(append(mods,
		sm.Where(PublicreportNuisanceOlds.Columns.ReviewerID.EQ(psql.Arg(o.ID))),
	)...)
}

func (os UserSlice) ReviewerNuisanceOlds(mods ...bob.Mod[*dialect.SelectQuery]) PublicreportNuisanceOldsQuery {
	pkID := make(pgtypes.Array[int32], 0, len(os))
	for _, o := range os {
		if o == nil {
			continue
		}
		pkID = append(pkID, o.ID)
	}
	PKArgExpr := psql.Select(sm.Columns(
		psql.F("unnest", psql.Cast(psql.Arg(pkID), "integer[]")),
	))

	return PublicreportNuisanceOlds.Query(append(mods,
		sm.Where(psql.Group(PublicreportNuisanceOlds.Columns.ReviewerID).OP("IN", PKArgExpr)),
	)...)
}

// ReviewerReports starts a query for related objects on publicreport.report
func (o *User) ReviewerReports(mods ...bob.Mod[*dialect.SelectQuery]) PublicreportReportsQuery {
	return PublicreportReports.Query(append(mods,
		sm.Where(PublicreportReports.Columns.ReviewerID.EQ(psql.Arg(o.ID))),
	)...)
}

func (os UserSlice) ReviewerReports(mods ...bob.Mod[*dialect.SelectQuery]) PublicreportReportsQuery {
	pkID := make(pgtypes.Array[int32], 0, len(os))
	for _, o := range os {
		if o == nil {
			continue
		}
		pkID = append(pkID, o.ID)
	}
	PKArgExpr := psql.Select(sm.Columns(
		psql.F("unnest", psql.Cast(psql.Arg(pkID), "integer[]")),
	))

	return PublicreportReports.Query(append(mods,
		sm.Where(psql.Group(PublicreportReports.Columns.ReviewerID).OP("IN", PKArgExpr)),
	)...)
}

// UserReportLogs starts a query for related objects on publicreport.report_log
func (o *User) UserReportLogs(mods ...bob.Mod[*dialect.SelectQuery]) PublicreportReportLogsQuery {
	return PublicreportReportLogs.Query(append(mods,
		sm.Where(PublicreportReportLogs.Columns.UserID.EQ(psql.Arg(o.ID))),
	)...)
}

func (os UserSlice) UserReportLogs(mods ...bob.Mod[*dialect.SelectQuery]) PublicreportReportLogsQuery {
	pkID := make(pgtypes.Array[int32], 0, len(os))
	for _, o := range os {
		if o == nil {
			continue
		}
		pkID = append(pkID, o.ID)
	}
	PKArgExpr := psql.Select(sm.Columns(
		psql.F("unnest", psql.Cast(psql.Arg(pkID), "integer[]")),
	))

	return PublicreportReportLogs.Query(append(mods,
		sm.Where(psql.Group(PublicreportReportLogs.Columns.UserID).OP("IN", PKArgExpr)),
	)...)
}

// ReviewerWaterOlds starts a query for related objects on publicreport.water_old
func (o *User) ReviewerWaterOlds(mods ...bob.Mod[*dialect.SelectQuery]) PublicreportWaterOldsQuery {
	return PublicreportWaterOlds.Query(append(mods,
		sm.Where(PublicreportWaterOlds.Columns.ReviewerID.EQ(psql.Arg(o.ID))),
	)...)
}

func (os UserSlice) ReviewerWaterOlds(mods ...bob.Mod[*dialect.SelectQuery]) PublicreportWaterOldsQuery {
	pkID := make(pgtypes.Array[int32], 0, len(os))
	for _, o := range os {
		if o == nil {
			continue
		}
		pkID = append(pkID, o.ID)
	}
	PKArgExpr := psql.Select(sm.Columns(
		psql.F("unnest", psql.Cast(psql.Arg(pkID), "integer[]")),
	))

	return PublicreportWaterOlds.Query(append(mods,
		sm.Where(psql.Group(PublicreportWaterOlds.Columns.ReviewerID).OP("IN", PKArgExpr)),
	)...)
}

// CreatorReportTexts starts a query for related objects on report_text
func (o *User) CreatorReportTexts(mods ...bob.Mod[*dialect.SelectQuery]) ReportTextsQuery {
	return ReportTexts.Query(append(mods,
		sm.Where(ReportTexts.Columns.CreatorID.EQ(psql.Arg(o.ID))),
	)...)
}

func (os UserSlice) CreatorReportTexts(mods ...bob.Mod[*dialect.SelectQuery]) ReportTextsQuery {
	pkID := make(pgtypes.Array[int32], 0, len(os))
	for _, o := range os {
		if o == nil {
			continue
		}
		pkID = append(pkID, o.ID)
	}
	PKArgExpr := psql.Select(sm.Columns(
		psql.F("unnest", psql.Cast(psql.Arg(pkID), "integer[]")),
	))

	return ReportTexts.Query(append(mods,
		sm.Where(psql.Group(ReportTexts.Columns.CreatorID).OP("IN", PKArgExpr)),
	)...)
}

// CreatorResidents starts a query for related objects on resident
func (o *User) CreatorResidents(mods ...bob.Mod[*dialect.SelectQuery]) ResidentsQuery {
	return Residents.Query(append(mods,
		sm.Where(Residents.Columns.Creator.EQ(psql.Arg(o.ID))),
	)...)
}

func (os UserSlice) CreatorResidents(mods ...bob.Mod[*dialect.SelectQuery]) ResidentsQuery {
	pkID := make(pgtypes.Array[int32], 0, len(os))
	for _, o := range os {
		if o == nil {
			continue
		}
		pkID = append(pkID, o.ID)
	}
	PKArgExpr := psql.Select(sm.Columns(
		psql.F("unnest", psql.Cast(psql.Arg(pkID), "integer[]")),
	))

	return Residents.Query(append(mods,
		sm.Where(psql.Group(Residents.Columns.Creator).OP("IN", PKArgExpr)),
	)...)
}

// CreatorReviewTasks starts a query for related objects on review_task
func (o *User) CreatorReviewTasks(mods ...bob.Mod[*dialect.SelectQuery]) ReviewTasksQuery {
	return ReviewTasks.Query(append(mods,
		sm.Where(ReviewTasks.Columns.CreatorID.EQ(psql.Arg(o.ID))),
	)...)
}

func (os UserSlice) CreatorReviewTasks(mods ...bob.Mod[*dialect.SelectQuery]) ReviewTasksQuery {
	pkID := make(pgtypes.Array[int32], 0, len(os))
	for _, o := range os {
		if o == nil {
			continue
		}
		pkID = append(pkID, o.ID)
	}
	PKArgExpr := psql.Select(sm.Columns(
		psql.F("unnest", psql.Cast(psql.Arg(pkID), "integer[]")),
	))

	return ReviewTasks.Query(append(mods,
		sm.Where(psql.Group(ReviewTasks.Columns.CreatorID).OP("IN", PKArgExpr)),
	)...)
}

// ReviewerReviewTasks starts a query for related objects on review_task
func (o *User) ReviewerReviewTasks(mods ...bob.Mod[*dialect.SelectQuery]) ReviewTasksQuery {
	return ReviewTasks.Query(append(mods,
		sm.Where(ReviewTasks.Columns.ReviewerID.EQ(psql.Arg(o.ID))),
	)...)
}

func (os UserSlice) ReviewerReviewTasks(mods ...bob.Mod[*dialect.SelectQuery]) ReviewTasksQuery {
	pkID := make(pgtypes.Array[int32], 0, len(os))
	for _, o := range os {
		if o == nil {
			continue
		}
		pkID = append(pkID, o.ID)
	}
	PKArgExpr := psql.Select(sm.Columns(
		psql.F("unnest", psql.Cast(psql.Arg(pkID), "integer[]")),
	))

	return ReviewTasks.Query(append(mods,
		sm.Where(psql.Group(ReviewTasks.Columns.ReviewerID).OP("IN", PKArgExpr)),
	)...)
}

// AddressorSignals starts a query for related objects on signal
func (o *User) AddressorSignals(mods ...bob.Mod[*dialect.SelectQuery]) SignalsQuery {
	return Signals.Query(append(mods,
		sm.Where(Signals.Columns.Addressor.EQ(psql.Arg(o.ID))),
	)...)
}

func (os UserSlice) AddressorSignals(mods ...bob.Mod[*dialect.SelectQuery]) SignalsQuery {
	pkID := make(pgtypes.Array[int32], 0, len(os))
	for _, o := range os {
		if o == nil {
			continue
		}
		pkID = append(pkID, o.ID)
	}
	PKArgExpr := psql.Select(sm.Columns(
		psql.F("unnest", psql.Cast(psql.Arg(pkID), "integer[]")),
	))

	return Signals.Query(append(mods,
		sm.Where(psql.Group(Signals.Columns.Addressor).OP("IN", PKArgExpr)),
	)...)
}

// CreatorSignals starts a query for related objects on signal
func (o *User) CreatorSignals(mods ...bob.Mod[*dialect.SelectQuery]) SignalsQuery {
	return Signals.Query(append(mods,
		sm.Where(Signals.Columns.Creator.EQ(psql.Arg(o.ID))),
	)...)
}

func (os UserSlice) CreatorSignals(mods ...bob.Mod[*dialect.SelectQuery]) SignalsQuery {
	pkID := make(pgtypes.Array[int32], 0, len(os))
	for _, o := range os {
		if o == nil {
			continue
		}
		pkID = append(pkID, o.ID)
	}
	PKArgExpr := psql.Select(sm.Columns(
		psql.F("unnest", psql.Cast(psql.Arg(pkID), "integer[]")),
	))

	return Signals.Query(append(mods,
		sm.Where(psql.Group(Signals.Columns.Creator).OP("IN", PKArgExpr)),
	)...)
}

// CreatorSites starts a query for related objects on site
func (o *User) CreatorSites(mods ...bob.Mod[*dialect.SelectQuery]) SitesQuery {
	return Sites.Query(append(mods,
		sm.Where(Sites.Columns.CreatorID.EQ(psql.Arg(o.ID))),
	)...)
}

func (os UserSlice) CreatorSites(mods ...bob.Mod[*dialect.SelectQuery]) SitesQuery {
	pkID := make(pgtypes.Array[int32], 0, len(os))
	for _, o := range os {
		if o == nil {
			continue
		}
		pkID = append(pkID, o.ID)
	}
	PKArgExpr := psql.Select(sm.Columns(
		psql.F("unnest", psql.Cast(psql.Arg(pkID), "integer[]")),
	))

	return Sites.Query(append(mods,
		sm.Where(psql.Group(Sites.Columns.CreatorID).OP("IN", PKArgExpr)),
	)...)
}

// Organization starts a query for related objects on organization
func (o *User) Organization(mods ...bob.Mod[*dialect.SelectQuery]) OrganizationsQuery {
	return Organizations.Query(append(mods,
		sm.Where(Organizations.Columns.ID.EQ(psql.Arg(o.OrganizationID))),
	)...)
}

func (os UserSlice) Organization(mods ...bob.Mod[*dialect.SelectQuery]) OrganizationsQuery {
	pkOrganizationID := make(pgtypes.Array[int32], 0, len(os))
	for _, o := range os {
		if o == nil {
			continue
		}
		pkOrganizationID = append(pkOrganizationID, o.OrganizationID)
	}
	PKArgExpr := psql.Select(sm.Columns(
		psql.F("unnest", psql.Cast(psql.Arg(pkOrganizationID), "integer[]")),
	))

	return Organizations.Query(append(mods,
		sm.Where(psql.Group(Organizations.Columns.ID).OP("IN", PKArgExpr)),
	)...)
}

func insertUserCreatorTextJobs0(ctx context.Context, exec bob.Executor, commsTextJobs1 []*CommsTextJobSetter, user0 *User) (CommsTextJobSlice, error) {
	for i := range commsTextJobs1 {
		commsTextJobs1[i].CreatorID = omitnull.From(user0.ID)
	}

	ret, err := CommsTextJobs.Insert(bob.ToMods(commsTextJobs1...)).All(ctx, exec)
	if err != nil {
		return ret, fmt.Errorf("insertUserCreatorTextJobs0: %w", err)
	}

	return ret, nil
}

func attachUserCreatorTextJobs0(ctx context.Context, exec bob.Executor, count int, commsTextJobs1 CommsTextJobSlice, user0 *User) (CommsTextJobSlice, error) {
	setter := &CommsTextJobSetter{
		CreatorID: omitnull.From(user0.ID),
	}

	err := commsTextJobs1.UpdateAll(ctx, exec, *setter)
	if err != nil {
		return nil, fmt.Errorf("attachUserCreatorTextJobs0: %w", err)
	}

	return commsTextJobs1, nil
}

func (user0 *User) InsertCreatorTextJobs(ctx context.Context, exec bob.Executor, related ...*CommsTextJobSetter) error {
	if len(related) == 0 {
		return nil
	}

	var err error

	commsTextJobs1, err := insertUserCreatorTextJobs0(ctx, exec, related, user0)
	if err != nil {
		return err
	}

	user0.R.CreatorTextJobs = append(user0.R.CreatorTextJobs, commsTextJobs1...)

	for _, rel := range commsTextJobs1 {
		rel.R.CreatorUser = user0
	}
	return nil
}

func (user0 *User) AttachCreatorTextJobs(ctx context.Context, exec bob.Executor, related ...*CommsTextJob) error {
	if len(related) == 0 {
		return nil
	}

	var err error
	commsTextJobs1 := CommsTextJobSlice(related)

	_, err = attachUserCreatorTextJobs0(ctx, exec, len(related), commsTextJobs1, user0)
	if err != nil {
		return err
	}

	user0.R.CreatorTextJobs = append(user0.R.CreatorTextJobs, commsTextJobs1...)

	for _, rel := range related {
		rel.R.CreatorUser = user0
	}

	return nil
}

func insertUserCommunicationLogEntries0(ctx context.Context, exec bob.Executor, communicationLogEntries1 []*CommunicationLogEntrySetter, user0 *User) (CommunicationLogEntrySlice, error) {
	for i := range communicationLogEntries1 {
		communicationLogEntries1[i].User = omitnull.From(user0.ID)
	}

	ret, err := CommunicationLogEntries.Insert(bob.ToMods(communicationLogEntries1...)).All(ctx, exec)
	if err != nil {
		return ret, fmt.Errorf("insertUserCommunicationLogEntries0: %w", err)
	}

	return ret, nil
}

func attachUserCommunicationLogEntries0(ctx context.Context, exec bob.Executor, count int, communicationLogEntries1 CommunicationLogEntrySlice, user0 *User) (CommunicationLogEntrySlice, error) {
	setter := &CommunicationLogEntrySetter{
		User: omitnull.From(user0.ID),
	}

	err := communicationLogEntries1.UpdateAll(ctx, exec, *setter)
	if err != nil {
		return nil, fmt.Errorf("attachUserCommunicationLogEntries0: %w", err)
	}

	return communicationLogEntries1, nil
}

func (user0 *User) InsertCommunicationLogEntries(ctx context.Context, exec bob.Executor, related ...*CommunicationLogEntrySetter) error {
	if len(related) == 0 {
		return nil
	}

	var err error

	communicationLogEntries1, err := insertUserCommunicationLogEntries0(ctx, exec, related, user0)
	if err != nil {
		return err
	}

	user0.R.CommunicationLogEntries = append(user0.R.CommunicationLogEntries, communicationLogEntries1...)

	for _, rel := range communicationLogEntries1 {
		rel.R.User = user0
	}
	return nil
}

func (user0 *User) AttachCommunicationLogEntries(ctx context.Context, exec bob.Executor, related ...*CommunicationLogEntry) error {
	if len(related) == 0 {
		return nil
	}

	var err error
	communicationLogEntries1 := CommunicationLogEntrySlice(related)

	_, err = attachUserCommunicationLogEntries0(ctx, exec, len(related), communicationLogEntries1, user0)
	if err != nil {
		return err
	}

	user0.R.CommunicationLogEntries = append(user0.R.CommunicationLogEntries, communicationLogEntries1...)

	for _, rel := range related {
		rel.R.User = user0
	}

	return nil
}

func insertUserCreatorComplianceReportRequests0(ctx context.Context, exec bob.Executor, complianceReportRequests1 []*ComplianceReportRequestSetter, user0 *User) (ComplianceReportRequestSlice, error) {
	for i := range complianceReportRequests1 {
		complianceReportRequests1[i].Creator = omit.From(user0.ID)
	}

	ret, err := ComplianceReportRequests.Insert(bob.ToMods(complianceReportRequests1...)).All(ctx, exec)
	if err != nil {
		return ret, fmt.Errorf("insertUserCreatorComplianceReportRequests0: %w", err)
	}

	return ret, nil
}

func attachUserCreatorComplianceReportRequests0(ctx context.Context, exec bob.Executor, count int, complianceReportRequests1 ComplianceReportRequestSlice, user0 *User) (ComplianceReportRequestSlice, error) {
	setter := &ComplianceReportRequestSetter{
		Creator: omit.From(user0.ID),
	}

	err := complianceReportRequests1.UpdateAll(ctx, exec, *setter)
	if err != nil {
		return nil, fmt.Errorf("attachUserCreatorComplianceReportRequests0: %w", err)
	}

	return complianceReportRequests1, nil
}

func (user0 *User) InsertCreatorComplianceReportRequests(ctx context.Context, exec bob.Executor, related ...*ComplianceReportRequestSetter) error {
	if len(related) == 0 {
		return nil
	}

	var err error

	complianceReportRequests1, err := insertUserCreatorComplianceReportRequests0(ctx, exec, related, user0)
	if err != nil {
		return err
	}

	user0.R.CreatorComplianceReportRequests = append(user0.R.CreatorComplianceReportRequests, complianceReportRequests1...)

	for _, rel := range complianceReportRequests1 {
		rel.R.CreatorUser = user0
	}
	return nil
}

func (user0 *User) AttachCreatorComplianceReportRequests(ctx context.Context, exec bob.Executor, related ...*ComplianceReportRequest) error {
	if len(related) == 0 {
		return nil
	}

	var err error
	complianceReportRequests1 := ComplianceReportRequestSlice(related)

	_, err = attachUserCreatorComplianceReportRequests0(ctx, exec, len(related), complianceReportRequests1, user0)
	if err != nil {
		return err
	}

	user0.R.CreatorComplianceReportRequests = append(user0.R.CreatorComplianceReportRequests, complianceReportRequests1...)

	for _, rel := range related {
		rel.R.CreatorUser = user0
	}

	return nil
}

func insertUserCreatorFeatures0(ctx context.Context, exec bob.Executor, features1 []*FeatureSetter, user0 *User) (FeatureSlice, error) {
	for i := range features1 {
		features1[i].CreatorID = omit.From(user0.ID)
	}

	ret, err := Features.Insert(bob.ToMods(features1...)).All(ctx, exec)
	if err != nil {
		return ret, fmt.Errorf("insertUserCreatorFeatures0: %w", err)
	}

	return ret, nil
}

func attachUserCreatorFeatures0(ctx context.Context, exec bob.Executor, count int, features1 FeatureSlice, user0 *User) (FeatureSlice, error) {
	setter := &FeatureSetter{
		CreatorID: omit.From(user0.ID),
	}

	err := features1.UpdateAll(ctx, exec, *setter)
	if err != nil {
		return nil, fmt.Errorf("attachUserCreatorFeatures0: %w", err)
	}

	return features1, nil
}

func (user0 *User) InsertCreatorFeatures(ctx context.Context, exec bob.Executor, related ...*FeatureSetter) error {
	if len(related) == 0 {
		return nil
	}

	var err error

	features1, err := insertUserCreatorFeatures0(ctx, exec, related, user0)
	if err != nil {
		return err
	}

	user0.R.CreatorFeatures = append(user0.R.CreatorFeatures, features1...)

	for _, rel := range features1 {
		rel.R.CreatorUser = user0
	}
	return nil
}

func (user0 *User) AttachCreatorFeatures(ctx context.Context, exec bob.Executor, related ...*Feature) error {
	if len(related) == 0 {
		return nil
	}

	var err error
	features1 := FeatureSlice(related)

	_, err = attachUserCreatorFeatures0(ctx, exec, len(related), features1, user0)
	if err != nil {
		return err
	}

	user0.R.CreatorFeatures = append(user0.R.CreatorFeatures, features1...)

	for _, rel := range related {
		rel.R.CreatorUser = user0
	}

	return nil
}

func insertUserCommitterFiles0(ctx context.Context, exec bob.Executor, fileuploadFiles1 []*FileuploadFileSetter, user0 *User) (FileuploadFileSlice, error) {
	for i := range fileuploadFiles1 {
		fileuploadFiles1[i].Committer = omitnull.From(user0.ID)
	}

	ret, err := FileuploadFiles.Insert(bob.ToMods(fileuploadFiles1...)).All(ctx, exec)
	if err != nil {
		return ret, fmt.Errorf("insertUserCommitterFiles0: %w", err)
	}

	return ret, nil
}

func attachUserCommitterFiles0(ctx context.Context, exec bob.Executor, count int, fileuploadFiles1 FileuploadFileSlice, user0 *User) (FileuploadFileSlice, error) {
	setter := &FileuploadFileSetter{
		Committer: omitnull.From(user0.ID),
	}

	err := fileuploadFiles1.UpdateAll(ctx, exec, *setter)
	if err != nil {
		return nil, fmt.Errorf("attachUserCommitterFiles0: %w", err)
	}

	return fileuploadFiles1, nil
}

func (user0 *User) InsertCommitterFiles(ctx context.Context, exec bob.Executor, related ...*FileuploadFileSetter) error {
	if len(related) == 0 {
		return nil
	}

	var err error

	fileuploadFiles1, err := insertUserCommitterFiles0(ctx, exec, related, user0)
	if err != nil {
		return err
	}

	user0.R.CommitterFiles = append(user0.R.CommitterFiles, fileuploadFiles1...)

	for _, rel := range fileuploadFiles1 {
		rel.R.CommitterUser = user0
	}
	return nil
}

func (user0 *User) AttachCommitterFiles(ctx context.Context, exec bob.Executor, related ...*FileuploadFile) error {
	if len(related) == 0 {
		return nil
	}

	var err error
	fileuploadFiles1 := FileuploadFileSlice(related)

	_, err = attachUserCommitterFiles0(ctx, exec, len(related), fileuploadFiles1, user0)
	if err != nil {
		return err
	}

	user0.R.CommitterFiles = append(user0.R.CommitterFiles, fileuploadFiles1...)

	for _, rel := range related {
		rel.R.CommitterUser = user0
	}

	return nil
}

func insertUserCreatorFiles0(ctx context.Context, exec bob.Executor, fileuploadFiles1 []*FileuploadFileSetter, user0 *User) (FileuploadFileSlice, error) {
	for i := range fileuploadFiles1 {
		fileuploadFiles1[i].CreatorID = omit.From(user0.ID)
	}

	ret, err := FileuploadFiles.Insert(bob.ToMods(fileuploadFiles1...)).All(ctx, exec)
	if err != nil {
		return ret, fmt.Errorf("insertUserCreatorFiles0: %w", err)
	}

	return ret, nil
}

func attachUserCreatorFiles0(ctx context.Context, exec bob.Executor, count int, fileuploadFiles1 FileuploadFileSlice, user0 *User) (FileuploadFileSlice, error) {
	setter := &FileuploadFileSetter{
		CreatorID: omit.From(user0.ID),
	}

	err := fileuploadFiles1.UpdateAll(ctx, exec, *setter)
	if err != nil {
		return nil, fmt.Errorf("attachUserCreatorFiles0: %w", err)
	}

	return fileuploadFiles1, nil
}

func (user0 *User) InsertCreatorFiles(ctx context.Context, exec bob.Executor, related ...*FileuploadFileSetter) error {
	if len(related) == 0 {
		return nil
	}

	var err error

	fileuploadFiles1, err := insertUserCreatorFiles0(ctx, exec, related, user0)
	if err != nil {
		return err
	}

	user0.R.CreatorFiles = append(user0.R.CreatorFiles, fileuploadFiles1...)

	for _, rel := range fileuploadFiles1 {
		rel.R.CreatorUser = user0
	}
	return nil
}

func (user0 *User) AttachCreatorFiles(ctx context.Context, exec bob.Executor, related ...*FileuploadFile) error {
	if len(related) == 0 {
		return nil
	}

	var err error
	fileuploadFiles1 := FileuploadFileSlice(related)

	_, err = attachUserCreatorFiles0(ctx, exec, len(related), fileuploadFiles1, user0)
	if err != nil {
		return err
	}

	user0.R.CreatorFiles = append(user0.R.CreatorFiles, fileuploadFiles1...)

	for _, rel := range related {
		rel.R.CreatorUser = user0
	}

	return nil
}

func insertUserFileuploadPool0(ctx context.Context, exec bob.Executor, fileuploadPools1 []*FileuploadPoolSetter, user0 *User) (FileuploadPoolSlice, error) {
	for i := range fileuploadPools1 {
		fileuploadPools1[i].CreatorID = omit.From(user0.ID)
	}

	ret, err := FileuploadPools.Insert(bob.ToMods(fileuploadPools1...)).All(ctx, exec)
	if err != nil {
		return ret, fmt.Errorf("insertUserFileuploadPool0: %w", err)
	}

	return ret, nil
}

func attachUserFileuploadPool0(ctx context.Context, exec bob.Executor, count int, fileuploadPools1 FileuploadPoolSlice, user0 *User) (FileuploadPoolSlice, error) {
	setter := &FileuploadPoolSetter{
		CreatorID: omit.From(user0.ID),
	}

	err := fileuploadPools1.UpdateAll(ctx, exec, *setter)
	if err != nil {
		return nil, fmt.Errorf("attachUserFileuploadPool0: %w", err)
	}

	return fileuploadPools1, nil
}

func (user0 *User) InsertFileuploadPool(ctx context.Context, exec bob.Executor, related ...*FileuploadPoolSetter) error {
	if len(related) == 0 {
		return nil
	}

	var err error

	fileuploadPools1, err := insertUserFileuploadPool0(ctx, exec, related, user0)
	if err != nil {
		return err
	}

	user0.R.FileuploadPool = append(user0.R.FileuploadPool, fileuploadPools1...)

	for _, rel := range fileuploadPools1 {
		rel.R.CreatorUser = user0
	}
	return nil
}

func (user0 *User) AttachFileuploadPool(ctx context.Context, exec bob.Executor, related ...*FileuploadPool) error {
	if len(related) == 0 {
		return nil
	}

	var err error
	fileuploadPools1 := FileuploadPoolSlice(related)

	_, err = attachUserFileuploadPool0(ctx, exec, len(related), fileuploadPools1, user0)
	if err != nil {
		return err
	}

	user0.R.FileuploadPool = append(user0.R.FileuploadPool, fileuploadPools1...)

	for _, rel := range related {
		rel.R.CreatorUser = user0
	}

	return nil
}

func insertUserCreatorLeads0(ctx context.Context, exec bob.Executor, leads1 []*LeadSetter, user0 *User) (LeadSlice, error) {
	for i := range leads1 {
		leads1[i].Creator = omit.From(user0.ID)
	}

	ret, err := Leads.Insert(bob.ToMods(leads1...)).All(ctx, exec)
	if err != nil {
		return ret, fmt.Errorf("insertUserCreatorLeads0: %w", err)
	}

	return ret, nil
}

func attachUserCreatorLeads0(ctx context.Context, exec bob.Executor, count int, leads1 LeadSlice, user0 *User) (LeadSlice, error) {
	setter := &LeadSetter{
		Creator: omit.From(user0.ID),
	}

	err := leads1.UpdateAll(ctx, exec, *setter)
	if err != nil {
		return nil, fmt.Errorf("attachUserCreatorLeads0: %w", err)
	}

	return leads1, nil
}

func (user0 *User) InsertCreatorLeads(ctx context.Context, exec bob.Executor, related ...*LeadSetter) error {
	if len(related) == 0 {
		return nil
	}

	var err error

	leads1, err := insertUserCreatorLeads0(ctx, exec, related, user0)
	if err != nil {
		return err
	}

	user0.R.CreatorLeads = append(user0.R.CreatorLeads, leads1...)

	for _, rel := range leads1 {
		rel.R.CreatorUser = user0
	}
	return nil
}

func (user0 *User) AttachCreatorLeads(ctx context.Context, exec bob.Executor, related ...*Lead) error {
	if len(related) == 0 {
		return nil
	}

	var err error
	leads1 := LeadSlice(related)

	_, err = attachUserCreatorLeads0(ctx, exec, len(related), leads1, user0)
	if err != nil {
		return err
	}

	user0.R.CreatorLeads = append(user0.R.CreatorLeads, leads1...)

	for _, rel := range related {
		rel.R.CreatorUser = user0
	}

	return nil
}

func insertUserImpersonatorLogImpersonations0(ctx context.Context, exec bob.Executor, logImpersonations1 []*LogImpersonationSetter, user0 *User) (LogImpersonationSlice, error) {
	for i := range logImpersonations1 {
		logImpersonations1[i].ImpersonatorID = omit.From(user0.ID)
	}

	ret, err := LogImpersonations.Insert(bob.ToMods(logImpersonations1...)).All(ctx, exec)
	if err != nil {
		return ret, fmt.Errorf("insertUserImpersonatorLogImpersonations0: %w", err)
	}

	return ret, nil
}

func attachUserImpersonatorLogImpersonations0(ctx context.Context, exec bob.Executor, count int, logImpersonations1 LogImpersonationSlice, user0 *User) (LogImpersonationSlice, error) {
	setter := &LogImpersonationSetter{
		ImpersonatorID: omit.From(user0.ID),
	}

	err := logImpersonations1.UpdateAll(ctx, exec, *setter)
	if err != nil {
		return nil, fmt.Errorf("attachUserImpersonatorLogImpersonations0: %w", err)
	}

	return logImpersonations1, nil
}

func (user0 *User) InsertImpersonatorLogImpersonations(ctx context.Context, exec bob.Executor, related ...*LogImpersonationSetter) error {
	if len(related) == 0 {
		return nil
	}

	var err error

	logImpersonations1, err := insertUserImpersonatorLogImpersonations0(ctx, exec, related, user0)
	if err != nil {
		return err
	}

	user0.R.ImpersonatorLogImpersonations = append(user0.R.ImpersonatorLogImpersonations, logImpersonations1...)

	for _, rel := range logImpersonations1 {
		rel.R.ImpersonatorUser = user0
	}
	return nil
}

func (user0 *User) AttachImpersonatorLogImpersonations(ctx context.Context, exec bob.Executor, related ...*LogImpersonation) error {
	if len(related) == 0 {
		return nil
	}

	var err error
	logImpersonations1 := LogImpersonationSlice(related)

	_, err = attachUserImpersonatorLogImpersonations0(ctx, exec, len(related), logImpersonations1, user0)
	if err != nil {
		return err
	}

	user0.R.ImpersonatorLogImpersonations = append(user0.R.ImpersonatorLogImpersonations, logImpersonations1...)

	for _, rel := range related {
		rel.R.ImpersonatorUser = user0
	}

	return nil
}

func insertUserTargetLogImpersonations0(ctx context.Context, exec bob.Executor, logImpersonations1 []*LogImpersonationSetter, user0 *User) (LogImpersonationSlice, error) {
	for i := range logImpersonations1 {
		logImpersonations1[i].TargetID = omit.From(user0.ID)
	}

	ret, err := LogImpersonations.Insert(bob.ToMods(logImpersonations1...)).All(ctx, exec)
	if err != nil {
		return ret, fmt.Errorf("insertUserTargetLogImpersonations0: %w", err)
	}

	return ret, nil
}

func attachUserTargetLogImpersonations0(ctx context.Context, exec bob.Executor, count int, logImpersonations1 LogImpersonationSlice, user0 *User) (LogImpersonationSlice, error) {
	setter := &LogImpersonationSetter{
		TargetID: omit.From(user0.ID),
	}

	err := logImpersonations1.UpdateAll(ctx, exec, *setter)
	if err != nil {
		return nil, fmt.Errorf("attachUserTargetLogImpersonations0: %w", err)
	}

	return logImpersonations1, nil
}

func (user0 *User) InsertTargetLogImpersonations(ctx context.Context, exec bob.Executor, related ...*LogImpersonationSetter) error {
	if len(related) == 0 {
		return nil
	}

	var err error

	logImpersonations1, err := insertUserTargetLogImpersonations0(ctx, exec, related, user0)
	if err != nil {
		return err
	}

	user0.R.TargetLogImpersonations = append(user0.R.TargetLogImpersonations, logImpersonations1...)

	for _, rel := range logImpersonations1 {
		rel.R.TargetUser = user0
	}
	return nil
}

func (user0 *User) AttachTargetLogImpersonations(ctx context.Context, exec bob.Executor, related ...*LogImpersonation) error {
	if len(related) == 0 {
		return nil
	}

	var err error
	logImpersonations1 := LogImpersonationSlice(related)

	_, err = attachUserTargetLogImpersonations0(ctx, exec, len(related), logImpersonations1, user0)
	if err != nil {
		return err
	}

	user0.R.TargetLogImpersonations = append(user0.R.TargetLogImpersonations, logImpersonations1...)

	for _, rel := range related {
		rel.R.TargetUser = user0
	}

	return nil
}

func insertUserCreatorNoteAudios0(ctx context.Context, exec bob.Executor, noteAudios1 []*NoteAudioSetter, user0 *User) (NoteAudioSlice, error) {
	for i := range noteAudios1 {
		noteAudios1[i].CreatorID = omit.From(user0.ID)
	}

	ret, err := NoteAudios.Insert(bob.ToMods(noteAudios1...)).All(ctx, exec)
	if err != nil {
		return ret, fmt.Errorf("insertUserCreatorNoteAudios0: %w", err)
	}

	return ret, nil
}

func attachUserCreatorNoteAudios0(ctx context.Context, exec bob.Executor, count int, noteAudios1 NoteAudioSlice, user0 *User) (NoteAudioSlice, error) {
	setter := &NoteAudioSetter{
		CreatorID: omit.From(user0.ID),
	}

	err := noteAudios1.UpdateAll(ctx, exec, *setter)
	if err != nil {
		return nil, fmt.Errorf("attachUserCreatorNoteAudios0: %w", err)
	}

	return noteAudios1, nil
}

func (user0 *User) InsertCreatorNoteAudios(ctx context.Context, exec bob.Executor, related ...*NoteAudioSetter) error {
	if len(related) == 0 {
		return nil
	}

	var err error

	noteAudios1, err := insertUserCreatorNoteAudios0(ctx, exec, related, user0)
	if err != nil {
		return err
	}

	user0.R.CreatorNoteAudios = append(user0.R.CreatorNoteAudios, noteAudios1...)

	for _, rel := range noteAudios1 {
		rel.R.CreatorUser = user0
	}
	return nil
}

func (user0 *User) AttachCreatorNoteAudios(ctx context.Context, exec bob.Executor, related ...*NoteAudio) error {
	if len(related) == 0 {
		return nil
	}

	var err error
	noteAudios1 := NoteAudioSlice(related)

	_, err = attachUserCreatorNoteAudios0(ctx, exec, len(related), noteAudios1, user0)
	if err != nil {
		return err
	}

	user0.R.CreatorNoteAudios = append(user0.R.CreatorNoteAudios, noteAudios1...)

	for _, rel := range related {
		rel.R.CreatorUser = user0
	}

	return nil
}

func insertUserDeletorNoteAudios0(ctx context.Context, exec bob.Executor, noteAudios1 []*NoteAudioSetter, user0 *User) (NoteAudioSlice, error) {
	for i := range noteAudios1 {
		noteAudios1[i].DeletorID = omitnull.From(user0.ID)
	}

	ret, err := NoteAudios.Insert(bob.ToMods(noteAudios1...)).All(ctx, exec)
	if err != nil {
		return ret, fmt.Errorf("insertUserDeletorNoteAudios0: %w", err)
	}

	return ret, nil
}

func attachUserDeletorNoteAudios0(ctx context.Context, exec bob.Executor, count int, noteAudios1 NoteAudioSlice, user0 *User) (NoteAudioSlice, error) {
	setter := &NoteAudioSetter{
		DeletorID: omitnull.From(user0.ID),
	}

	err := noteAudios1.UpdateAll(ctx, exec, *setter)
	if err != nil {
		return nil, fmt.Errorf("attachUserDeletorNoteAudios0: %w", err)
	}

	return noteAudios1, nil
}

func (user0 *User) InsertDeletorNoteAudios(ctx context.Context, exec bob.Executor, related ...*NoteAudioSetter) error {
	if len(related) == 0 {
		return nil
	}

	var err error

	noteAudios1, err := insertUserDeletorNoteAudios0(ctx, exec, related, user0)
	if err != nil {
		return err
	}

	user0.R.DeletorNoteAudios = append(user0.R.DeletorNoteAudios, noteAudios1...)

	for _, rel := range noteAudios1 {
		rel.R.DeletorUser = user0
	}
	return nil
}

func (user0 *User) AttachDeletorNoteAudios(ctx context.Context, exec bob.Executor, related ...*NoteAudio) error {
	if len(related) == 0 {
		return nil
	}

	var err error
	noteAudios1 := NoteAudioSlice(related)

	_, err = attachUserDeletorNoteAudios0(ctx, exec, len(related), noteAudios1, user0)
	if err != nil {
		return err
	}

	user0.R.DeletorNoteAudios = append(user0.R.DeletorNoteAudios, noteAudios1...)

	for _, rel := range related {
		rel.R.DeletorUser = user0
	}

	return nil
}

func insertUserCreatorNoteImages0(ctx context.Context, exec bob.Executor, noteImages1 []*NoteImageSetter, user0 *User) (NoteImageSlice, error) {
	for i := range noteImages1 {
		noteImages1[i].CreatorID = omit.From(user0.ID)
	}

	ret, err := NoteImages.Insert(bob.ToMods(noteImages1...)).All(ctx, exec)
	if err != nil {
		return ret, fmt.Errorf("insertUserCreatorNoteImages0: %w", err)
	}

	return ret, nil
}

func attachUserCreatorNoteImages0(ctx context.Context, exec bob.Executor, count int, noteImages1 NoteImageSlice, user0 *User) (NoteImageSlice, error) {
	setter := &NoteImageSetter{
		CreatorID: omit.From(user0.ID),
	}

	err := noteImages1.UpdateAll(ctx, exec, *setter)
	if err != nil {
		return nil, fmt.Errorf("attachUserCreatorNoteImages0: %w", err)
	}

	return noteImages1, nil
}

func (user0 *User) InsertCreatorNoteImages(ctx context.Context, exec bob.Executor, related ...*NoteImageSetter) error {
	if len(related) == 0 {
		return nil
	}

	var err error

	noteImages1, err := insertUserCreatorNoteImages0(ctx, exec, related, user0)
	if err != nil {
		return err
	}

	user0.R.CreatorNoteImages = append(user0.R.CreatorNoteImages, noteImages1...)

	for _, rel := range noteImages1 {
		rel.R.CreatorUser = user0
	}
	return nil
}

func (user0 *User) AttachCreatorNoteImages(ctx context.Context, exec bob.Executor, related ...*NoteImage) error {
	if len(related) == 0 {
		return nil
	}

	var err error
	noteImages1 := NoteImageSlice(related)

	_, err = attachUserCreatorNoteImages0(ctx, exec, len(related), noteImages1, user0)
	if err != nil {
		return err
	}

	user0.R.CreatorNoteImages = append(user0.R.CreatorNoteImages, noteImages1...)

	for _, rel := range related {
		rel.R.CreatorUser = user0
	}

	return nil
}

func insertUserDeletorNoteImages0(ctx context.Context, exec bob.Executor, noteImages1 []*NoteImageSetter, user0 *User) (NoteImageSlice, error) {
	for i := range noteImages1 {
		noteImages1[i].DeletorID = omitnull.From(user0.ID)
	}

	ret, err := NoteImages.Insert(bob.ToMods(noteImages1...)).All(ctx, exec)
	if err != nil {
		return ret, fmt.Errorf("insertUserDeletorNoteImages0: %w", err)
	}

	return ret, nil
}

func attachUserDeletorNoteImages0(ctx context.Context, exec bob.Executor, count int, noteImages1 NoteImageSlice, user0 *User) (NoteImageSlice, error) {
	setter := &NoteImageSetter{
		DeletorID: omitnull.From(user0.ID),
	}

	err := noteImages1.UpdateAll(ctx, exec, *setter)
	if err != nil {
		return nil, fmt.Errorf("attachUserDeletorNoteImages0: %w", err)
	}

	return noteImages1, nil
}

func (user0 *User) InsertDeletorNoteImages(ctx context.Context, exec bob.Executor, related ...*NoteImageSetter) error {
	if len(related) == 0 {
		return nil
	}

	var err error

	noteImages1, err := insertUserDeletorNoteImages0(ctx, exec, related, user0)
	if err != nil {
		return err
	}

	user0.R.DeletorNoteImages = append(user0.R.DeletorNoteImages, noteImages1...)

	for _, rel := range noteImages1 {
		rel.R.DeletorUser = user0
	}
	return nil
}

func (user0 *User) AttachDeletorNoteImages(ctx context.Context, exec bob.Executor, related ...*NoteImage) error {
	if len(related) == 0 {
		return nil
	}

	var err error
	noteImages1 := NoteImageSlice(related)

	_, err = attachUserDeletorNoteImages0(ctx, exec, len(related), noteImages1, user0)
	if err != nil {
		return err
	}

	user0.R.DeletorNoteImages = append(user0.R.DeletorNoteImages, noteImages1...)

	for _, rel := range related {
		rel.R.DeletorUser = user0
	}

	return nil
}

func insertUserUserNotifications0(ctx context.Context, exec bob.Executor, notifications1 []*NotificationSetter, user0 *User) (NotificationSlice, error) {
	for i := range notifications1 {
		notifications1[i].UserID = omit.From(user0.ID)
	}

	ret, err := Notifications.Insert(bob.ToMods(notifications1...)).All(ctx, exec)
	if err != nil {
		return ret, fmt.Errorf("insertUserUserNotifications0: %w", err)
	}

	return ret, nil
}

func attachUserUserNotifications0(ctx context.Context, exec bob.Executor, count int, notifications1 NotificationSlice, user0 *User) (NotificationSlice, error) {
	setter := &NotificationSetter{
		UserID: omit.From(user0.ID),
	}

	err := notifications1.UpdateAll(ctx, exec, *setter)
	if err != nil {
		return nil, fmt.Errorf("attachUserUserNotifications0: %w", err)
	}

	return notifications1, nil
}

func (user0 *User) InsertUserNotifications(ctx context.Context, exec bob.Executor, related ...*NotificationSetter) error {
	if len(related) == 0 {
		return nil
	}

	var err error

	notifications1, err := insertUserUserNotifications0(ctx, exec, related, user0)
	if err != nil {
		return err
	}

	user0.R.UserNotifications = append(user0.R.UserNotifications, notifications1...)

	for _, rel := range notifications1 {
		rel.R.UserUser = user0
	}
	return nil
}

func (user0 *User) AttachUserNotifications(ctx context.Context, exec bob.Executor, related ...*Notification) error {
	if len(related) == 0 {
		return nil
	}

	var err error
	notifications1 := NotificationSlice(related)

	_, err = attachUserUserNotifications0(ctx, exec, len(related), notifications1, user0)
	if err != nil {
		return err
	}

	user0.R.UserNotifications = append(user0.R.UserNotifications, notifications1...)

	for _, rel := range related {
		rel.R.UserUser = user0
	}

	return nil
}

func insertUserReviewerNuisanceOlds0(ctx context.Context, exec bob.Executor, publicreportNuisanceOlds1 []*PublicreportNuisanceOldSetter, user0 *User) (PublicreportNuisanceOldSlice, error) {
	for i := range publicreportNuisanceOlds1 {
		publicreportNuisanceOlds1[i].ReviewerID = omitnull.From(user0.ID)
	}

	ret, err := PublicreportNuisanceOlds.Insert(bob.ToMods(publicreportNuisanceOlds1...)).All(ctx, exec)
	if err != nil {
		return ret, fmt.Errorf("insertUserReviewerNuisanceOlds0: %w", err)
	}

	return ret, nil
}

func attachUserReviewerNuisanceOlds0(ctx context.Context, exec bob.Executor, count int, publicreportNuisanceOlds1 PublicreportNuisanceOldSlice, user0 *User) (PublicreportNuisanceOldSlice, error) {
	setter := &PublicreportNuisanceOldSetter{
		ReviewerID: omitnull.From(user0.ID),
	}

	err := publicreportNuisanceOlds1.UpdateAll(ctx, exec, *setter)
	if err != nil {
		return nil, fmt.Errorf("attachUserReviewerNuisanceOlds0: %w", err)
	}

	return publicreportNuisanceOlds1, nil
}

func (user0 *User) InsertReviewerNuisanceOlds(ctx context.Context, exec bob.Executor, related ...*PublicreportNuisanceOldSetter) error {
	if len(related) == 0 {
		return nil
	}

	var err error

	publicreportNuisanceOlds1, err := insertUserReviewerNuisanceOlds0(ctx, exec, related, user0)
	if err != nil {
		return err
	}

	user0.R.ReviewerNuisanceOlds = append(user0.R.ReviewerNuisanceOlds, publicreportNuisanceOlds1...)

	for _, rel := range publicreportNuisanceOlds1 {
		rel.R.ReviewerUser = user0
	}
	return nil
}

func (user0 *User) AttachReviewerNuisanceOlds(ctx context.Context, exec bob.Executor, related ...*PublicreportNuisanceOld) error {
	if len(related) == 0 {
		return nil
	}

	var err error
	publicreportNuisanceOlds1 := PublicreportNuisanceOldSlice(related)

	_, err = attachUserReviewerNuisanceOlds0(ctx, exec, len(related), publicreportNuisanceOlds1, user0)
	if err != nil {
		return err
	}

	user0.R.ReviewerNuisanceOlds = append(user0.R.ReviewerNuisanceOlds, publicreportNuisanceOlds1...)

	for _, rel := range related {
		rel.R.ReviewerUser = user0
	}

	return nil
}

func insertUserReviewerReports0(ctx context.Context, exec bob.Executor, publicreportReports1 []*PublicreportReportSetter, user0 *User) (PublicreportReportSlice, error) {
	for i := range publicreportReports1 {
		publicreportReports1[i].ReviewerID = omitnull.From(user0.ID)
	}

	ret, err := PublicreportReports.Insert(bob.ToMods(publicreportReports1...)).All(ctx, exec)
	if err != nil {
		return ret, fmt.Errorf("insertUserReviewerReports0: %w", err)
	}

	return ret, nil
}

func attachUserReviewerReports0(ctx context.Context, exec bob.Executor, count int, publicreportReports1 PublicreportReportSlice, user0 *User) (PublicreportReportSlice, error) {
	setter := &PublicreportReportSetter{
		ReviewerID: omitnull.From(user0.ID),
	}

	err := publicreportReports1.UpdateAll(ctx, exec, *setter)
	if err != nil {
		return nil, fmt.Errorf("attachUserReviewerReports0: %w", err)
	}

	return publicreportReports1, nil
}

func (user0 *User) InsertReviewerReports(ctx context.Context, exec bob.Executor, related ...*PublicreportReportSetter) error {
	if len(related) == 0 {
		return nil
	}

	var err error

	publicreportReports1, err := insertUserReviewerReports0(ctx, exec, related, user0)
	if err != nil {
		return err
	}

	user0.R.ReviewerReports = append(user0.R.ReviewerReports, publicreportReports1...)

	for _, rel := range publicreportReports1 {
		rel.R.ReviewerUser = user0
	}
	return nil
}

func (user0 *User) AttachReviewerReports(ctx context.Context, exec bob.Executor, related ...*PublicreportReport) error {
	if len(related) == 0 {
		return nil
	}

	var err error
	publicreportReports1 := PublicreportReportSlice(related)

	_, err = attachUserReviewerReports0(ctx, exec, len(related), publicreportReports1, user0)
	if err != nil {
		return err
	}

	user0.R.ReviewerReports = append(user0.R.ReviewerReports, publicreportReports1...)

	for _, rel := range related {
		rel.R.ReviewerUser = user0
	}

	return nil
}

func insertUserUserReportLogs0(ctx context.Context, exec bob.Executor, publicreportReportLogs1 []*PublicreportReportLogSetter, user0 *User) (PublicreportReportLogSlice, error) {
	for i := range publicreportReportLogs1 {
		publicreportReportLogs1[i].UserID = omitnull.From(user0.ID)
	}

	ret, err := PublicreportReportLogs.Insert(bob.ToMods(publicreportReportLogs1...)).All(ctx, exec)
	if err != nil {
		return ret, fmt.Errorf("insertUserUserReportLogs0: %w", err)
	}

	return ret, nil
}

func attachUserUserReportLogs0(ctx context.Context, exec bob.Executor, count int, publicreportReportLogs1 PublicreportReportLogSlice, user0 *User) (PublicreportReportLogSlice, error) {
	setter := &PublicreportReportLogSetter{
		UserID: omitnull.From(user0.ID),
	}

	err := publicreportReportLogs1.UpdateAll(ctx, exec, *setter)
	if err != nil {
		return nil, fmt.Errorf("attachUserUserReportLogs0: %w", err)
	}

	return publicreportReportLogs1, nil
}

func (user0 *User) InsertUserReportLogs(ctx context.Context, exec bob.Executor, related ...*PublicreportReportLogSetter) error {
	if len(related) == 0 {
		return nil
	}

	var err error

	publicreportReportLogs1, err := insertUserUserReportLogs0(ctx, exec, related, user0)
	if err != nil {
		return err
	}

	user0.R.UserReportLogs = append(user0.R.UserReportLogs, publicreportReportLogs1...)

	for _, rel := range publicreportReportLogs1 {
		rel.R.UserUser = user0
	}
	return nil
}

func (user0 *User) AttachUserReportLogs(ctx context.Context, exec bob.Executor, related ...*PublicreportReportLog) error {
	if len(related) == 0 {
		return nil
	}

	var err error
	publicreportReportLogs1 := PublicreportReportLogSlice(related)

	_, err = attachUserUserReportLogs0(ctx, exec, len(related), publicreportReportLogs1, user0)
	if err != nil {
		return err
	}

	user0.R.UserReportLogs = append(user0.R.UserReportLogs, publicreportReportLogs1...)

	for _, rel := range related {
		rel.R.UserUser = user0
	}

	return nil
}

func insertUserReviewerWaterOlds0(ctx context.Context, exec bob.Executor, publicreportWaterOlds1 []*PublicreportWaterOldSetter, user0 *User) (PublicreportWaterOldSlice, error) {
	for i := range publicreportWaterOlds1 {
		publicreportWaterOlds1[i].ReviewerID = omitnull.From(user0.ID)
	}

	ret, err := PublicreportWaterOlds.Insert(bob.ToMods(publicreportWaterOlds1...)).All(ctx, exec)
	if err != nil {
		return ret, fmt.Errorf("insertUserReviewerWaterOlds0: %w", err)
	}

	return ret, nil
}

func attachUserReviewerWaterOlds0(ctx context.Context, exec bob.Executor, count int, publicreportWaterOlds1 PublicreportWaterOldSlice, user0 *User) (PublicreportWaterOldSlice, error) {
	setter := &PublicreportWaterOldSetter{
		ReviewerID: omitnull.From(user0.ID),
	}

	err := publicreportWaterOlds1.UpdateAll(ctx, exec, *setter)
	if err != nil {
		return nil, fmt.Errorf("attachUserReviewerWaterOlds0: %w", err)
	}

	return publicreportWaterOlds1, nil
}

func (user0 *User) InsertReviewerWaterOlds(ctx context.Context, exec bob.Executor, related ...*PublicreportWaterOldSetter) error {
	if len(related) == 0 {
		return nil
	}

	var err error

	publicreportWaterOlds1, err := insertUserReviewerWaterOlds0(ctx, exec, related, user0)
	if err != nil {
		return err
	}

	user0.R.ReviewerWaterOlds = append(user0.R.ReviewerWaterOlds, publicreportWaterOlds1...)

	for _, rel := range publicreportWaterOlds1 {
		rel.R.ReviewerUser = user0
	}
	return nil
}

func (user0 *User) AttachReviewerWaterOlds(ctx context.Context, exec bob.Executor, related ...*PublicreportWaterOld) error {
	if len(related) == 0 {
		return nil
	}

	var err error
	publicreportWaterOlds1 := PublicreportWaterOldSlice(related)

	_, err = attachUserReviewerWaterOlds0(ctx, exec, len(related), publicreportWaterOlds1, user0)
	if err != nil {
		return err
	}

	user0.R.ReviewerWaterOlds = append(user0.R.ReviewerWaterOlds, publicreportWaterOlds1...)

	for _, rel := range related {
		rel.R.ReviewerUser = user0
	}

	return nil
}

func insertUserCreatorReportTexts0(ctx context.Context, exec bob.Executor, reportTexts1 []*ReportTextSetter, user0 *User) (ReportTextSlice, error) {
	for i := range reportTexts1 {
		reportTexts1[i].CreatorID = omit.From(user0.ID)
	}

	ret, err := ReportTexts.Insert(bob.ToMods(reportTexts1...)).All(ctx, exec)
	if err != nil {
		return ret, fmt.Errorf("insertUserCreatorReportTexts0: %w", err)
	}

	return ret, nil
}

func attachUserCreatorReportTexts0(ctx context.Context, exec bob.Executor, count int, reportTexts1 ReportTextSlice, user0 *User) (ReportTextSlice, error) {
	setter := &ReportTextSetter{
		CreatorID: omit.From(user0.ID),
	}

	err := reportTexts1.UpdateAll(ctx, exec, *setter)
	if err != nil {
		return nil, fmt.Errorf("attachUserCreatorReportTexts0: %w", err)
	}

	return reportTexts1, nil
}

func (user0 *User) InsertCreatorReportTexts(ctx context.Context, exec bob.Executor, related ...*ReportTextSetter) error {
	if len(related) == 0 {
		return nil
	}

	var err error

	reportTexts1, err := insertUserCreatorReportTexts0(ctx, exec, related, user0)
	if err != nil {
		return err
	}

	user0.R.CreatorReportTexts = append(user0.R.CreatorReportTexts, reportTexts1...)

	for _, rel := range reportTexts1 {
		rel.R.CreatorUser = user0
	}
	return nil
}

func (user0 *User) AttachCreatorReportTexts(ctx context.Context, exec bob.Executor, related ...*ReportText) error {
	if len(related) == 0 {
		return nil
	}

	var err error
	reportTexts1 := ReportTextSlice(related)

	_, err = attachUserCreatorReportTexts0(ctx, exec, len(related), reportTexts1, user0)
	if err != nil {
		return err
	}

	user0.R.CreatorReportTexts = append(user0.R.CreatorReportTexts, reportTexts1...)

	for _, rel := range related {
		rel.R.CreatorUser = user0
	}

	return nil
}

func insertUserCreatorResidents0(ctx context.Context, exec bob.Executor, residents1 []*ResidentSetter, user0 *User) (ResidentSlice, error) {
	for i := range residents1 {
		residents1[i].Creator = omit.From(user0.ID)
	}

	ret, err := Residents.Insert(bob.ToMods(residents1...)).All(ctx, exec)
	if err != nil {
		return ret, fmt.Errorf("insertUserCreatorResidents0: %w", err)
	}

	return ret, nil
}

func attachUserCreatorResidents0(ctx context.Context, exec bob.Executor, count int, residents1 ResidentSlice, user0 *User) (ResidentSlice, error) {
	setter := &ResidentSetter{
		Creator: omit.From(user0.ID),
	}

	err := residents1.UpdateAll(ctx, exec, *setter)
	if err != nil {
		return nil, fmt.Errorf("attachUserCreatorResidents0: %w", err)
	}

	return residents1, nil
}

func (user0 *User) InsertCreatorResidents(ctx context.Context, exec bob.Executor, related ...*ResidentSetter) error {
	if len(related) == 0 {
		return nil
	}

	var err error

	residents1, err := insertUserCreatorResidents0(ctx, exec, related, user0)
	if err != nil {
		return err
	}

	user0.R.CreatorResidents = append(user0.R.CreatorResidents, residents1...)

	for _, rel := range residents1 {
		rel.R.CreatorUser = user0
	}
	return nil
}

func (user0 *User) AttachCreatorResidents(ctx context.Context, exec bob.Executor, related ...*Resident) error {
	if len(related) == 0 {
		return nil
	}

	var err error
	residents1 := ResidentSlice(related)

	_, err = attachUserCreatorResidents0(ctx, exec, len(related), residents1, user0)
	if err != nil {
		return err
	}

	user0.R.CreatorResidents = append(user0.R.CreatorResidents, residents1...)

	for _, rel := range related {
		rel.R.CreatorUser = user0
	}

	return nil
}

func insertUserCreatorReviewTasks0(ctx context.Context, exec bob.Executor, reviewTasks1 []*ReviewTaskSetter, user0 *User) (ReviewTaskSlice, error) {
	for i := range reviewTasks1 {
		reviewTasks1[i].CreatorID = omitnull.From(user0.ID)
	}

	ret, err := ReviewTasks.Insert(bob.ToMods(reviewTasks1...)).All(ctx, exec)
	if err != nil {
		return ret, fmt.Errorf("insertUserCreatorReviewTasks0: %w", err)
	}

	return ret, nil
}

func attachUserCreatorReviewTasks0(ctx context.Context, exec bob.Executor, count int, reviewTasks1 ReviewTaskSlice, user0 *User) (ReviewTaskSlice, error) {
	setter := &ReviewTaskSetter{
		CreatorID: omitnull.From(user0.ID),
	}

	err := reviewTasks1.UpdateAll(ctx, exec, *setter)
	if err != nil {
		return nil, fmt.Errorf("attachUserCreatorReviewTasks0: %w", err)
	}

	return reviewTasks1, nil
}

func (user0 *User) InsertCreatorReviewTasks(ctx context.Context, exec bob.Executor, related ...*ReviewTaskSetter) error {
	if len(related) == 0 {
		return nil
	}

	var err error

	reviewTasks1, err := insertUserCreatorReviewTasks0(ctx, exec, related, user0)
	if err != nil {
		return err
	}

	user0.R.CreatorReviewTasks = append(user0.R.CreatorReviewTasks, reviewTasks1...)

	for _, rel := range reviewTasks1 {
		rel.R.CreatorUser = user0
	}
	return nil
}

func (user0 *User) AttachCreatorReviewTasks(ctx context.Context, exec bob.Executor, related ...*ReviewTask) error {
	if len(related) == 0 {
		return nil
	}

	var err error
	reviewTasks1 := ReviewTaskSlice(related)

	_, err = attachUserCreatorReviewTasks0(ctx, exec, len(related), reviewTasks1, user0)
	if err != nil {
		return err
	}

	user0.R.CreatorReviewTasks = append(user0.R.CreatorReviewTasks, reviewTasks1...)

	for _, rel := range related {
		rel.R.CreatorUser = user0
	}

	return nil
}

func insertUserReviewerReviewTasks0(ctx context.Context, exec bob.Executor, reviewTasks1 []*ReviewTaskSetter, user0 *User) (ReviewTaskSlice, error) {
	for i := range reviewTasks1 {
		reviewTasks1[i].ReviewerID = omitnull.From(user0.ID)
	}

	ret, err := ReviewTasks.Insert(bob.ToMods(reviewTasks1...)).All(ctx, exec)
	if err != nil {
		return ret, fmt.Errorf("insertUserReviewerReviewTasks0: %w", err)
	}

	return ret, nil
}

func attachUserReviewerReviewTasks0(ctx context.Context, exec bob.Executor, count int, reviewTasks1 ReviewTaskSlice, user0 *User) (ReviewTaskSlice, error) {
	setter := &ReviewTaskSetter{
		ReviewerID: omitnull.From(user0.ID),
	}

	err := reviewTasks1.UpdateAll(ctx, exec, *setter)
	if err != nil {
		return nil, fmt.Errorf("attachUserReviewerReviewTasks0: %w", err)
	}

	return reviewTasks1, nil
}

func (user0 *User) InsertReviewerReviewTasks(ctx context.Context, exec bob.Executor, related ...*ReviewTaskSetter) error {
	if len(related) == 0 {
		return nil
	}

	var err error

	reviewTasks1, err := insertUserReviewerReviewTasks0(ctx, exec, related, user0)
	if err != nil {
		return err
	}

	user0.R.ReviewerReviewTasks = append(user0.R.ReviewerReviewTasks, reviewTasks1...)

	for _, rel := range reviewTasks1 {
		rel.R.ReviewerUser = user0
	}
	return nil
}

func (user0 *User) AttachReviewerReviewTasks(ctx context.Context, exec bob.Executor, related ...*ReviewTask) error {
	if len(related) == 0 {
		return nil
	}

	var err error
	reviewTasks1 := ReviewTaskSlice(related)

	_, err = attachUserReviewerReviewTasks0(ctx, exec, len(related), reviewTasks1, user0)
	if err != nil {
		return err
	}

	user0.R.ReviewerReviewTasks = append(user0.R.ReviewerReviewTasks, reviewTasks1...)

	for _, rel := range related {
		rel.R.ReviewerUser = user0
	}

	return nil
}

func insertUserAddressorSignals0(ctx context.Context, exec bob.Executor, signals1 []*SignalSetter, user0 *User) (SignalSlice, error) {
	for i := range signals1 {
		signals1[i].Addressor = omitnull.From(user0.ID)
	}

	ret, err := Signals.Insert(bob.ToMods(signals1...)).All(ctx, exec)
	if err != nil {
		return ret, fmt.Errorf("insertUserAddressorSignals0: %w", err)
	}

	return ret, nil
}

func attachUserAddressorSignals0(ctx context.Context, exec bob.Executor, count int, signals1 SignalSlice, user0 *User) (SignalSlice, error) {
	setter := &SignalSetter{
		Addressor: omitnull.From(user0.ID),
	}

	err := signals1.UpdateAll(ctx, exec, *setter)
	if err != nil {
		return nil, fmt.Errorf("attachUserAddressorSignals0: %w", err)
	}

	return signals1, nil
}

func (user0 *User) InsertAddressorSignals(ctx context.Context, exec bob.Executor, related ...*SignalSetter) error {
	if len(related) == 0 {
		return nil
	}

	var err error

	signals1, err := insertUserAddressorSignals0(ctx, exec, related, user0)
	if err != nil {
		return err
	}

	user0.R.AddressorSignals = append(user0.R.AddressorSignals, signals1...)

	for _, rel := range signals1 {
		rel.R.AddressorUser = user0
	}
	return nil
}

func (user0 *User) AttachAddressorSignals(ctx context.Context, exec bob.Executor, related ...*Signal) error {
	if len(related) == 0 {
		return nil
	}

	var err error
	signals1 := SignalSlice(related)

	_, err = attachUserAddressorSignals0(ctx, exec, len(related), signals1, user0)
	if err != nil {
		return err
	}

	user0.R.AddressorSignals = append(user0.R.AddressorSignals, signals1...)

	for _, rel := range related {
		rel.R.AddressorUser = user0
	}

	return nil
}

func insertUserCreatorSignals0(ctx context.Context, exec bob.Executor, signals1 []*SignalSetter, user0 *User) (SignalSlice, error) {
	for i := range signals1 {
		signals1[i].Creator = omit.From(user0.ID)
	}

	ret, err := Signals.Insert(bob.ToMods(signals1...)).All(ctx, exec)
	if err != nil {
		return ret, fmt.Errorf("insertUserCreatorSignals0: %w", err)
	}

	return ret, nil
}

func attachUserCreatorSignals0(ctx context.Context, exec bob.Executor, count int, signals1 SignalSlice, user0 *User) (SignalSlice, error) {
	setter := &SignalSetter{
		Creator: omit.From(user0.ID),
	}

	err := signals1.UpdateAll(ctx, exec, *setter)
	if err != nil {
		return nil, fmt.Errorf("attachUserCreatorSignals0: %w", err)
	}

	return signals1, nil
}

func (user0 *User) InsertCreatorSignals(ctx context.Context, exec bob.Executor, related ...*SignalSetter) error {
	if len(related) == 0 {
		return nil
	}

	var err error

	signals1, err := insertUserCreatorSignals0(ctx, exec, related, user0)
	if err != nil {
		return err
	}

	user0.R.CreatorSignals = append(user0.R.CreatorSignals, signals1...)

	for _, rel := range signals1 {
		rel.R.CreatorUser = user0
	}
	return nil
}

func (user0 *User) AttachCreatorSignals(ctx context.Context, exec bob.Executor, related ...*Signal) error {
	if len(related) == 0 {
		return nil
	}

	var err error
	signals1 := SignalSlice(related)

	_, err = attachUserCreatorSignals0(ctx, exec, len(related), signals1, user0)
	if err != nil {
		return err
	}

	user0.R.CreatorSignals = append(user0.R.CreatorSignals, signals1...)

	for _, rel := range related {
		rel.R.CreatorUser = user0
	}

	return nil
}

func insertUserCreatorSites0(ctx context.Context, exec bob.Executor, sites1 []*SiteSetter, user0 *User) (SiteSlice, error) {
	for i := range sites1 {
		sites1[i].CreatorID = omit.From(user0.ID)
	}

	ret, err := Sites.Insert(bob.ToMods(sites1...)).All(ctx, exec)
	if err != nil {
		return ret, fmt.Errorf("insertUserCreatorSites0: %w", err)
	}

	return ret, nil
}

func attachUserCreatorSites0(ctx context.Context, exec bob.Executor, count int, sites1 SiteSlice, user0 *User) (SiteSlice, error) {
	setter := &SiteSetter{
		CreatorID: omit.From(user0.ID),
	}

	err := sites1.UpdateAll(ctx, exec, *setter)
	if err != nil {
		return nil, fmt.Errorf("attachUserCreatorSites0: %w", err)
	}

	return sites1, nil
}

func (user0 *User) InsertCreatorSites(ctx context.Context, exec bob.Executor, related ...*SiteSetter) error {
	if len(related) == 0 {
		return nil
	}

	var err error

	sites1, err := insertUserCreatorSites0(ctx, exec, related, user0)
	if err != nil {
		return err
	}

	user0.R.CreatorSites = append(user0.R.CreatorSites, sites1...)

	for _, rel := range sites1 {
		rel.R.CreatorUser = user0
	}
	return nil
}

func (user0 *User) AttachCreatorSites(ctx context.Context, exec bob.Executor, related ...*Site) error {
	if len(related) == 0 {
		return nil
	}

	var err error
	sites1 := SiteSlice(related)

	_, err = attachUserCreatorSites0(ctx, exec, len(related), sites1, user0)
	if err != nil {
		return err
	}

	user0.R.CreatorSites = append(user0.R.CreatorSites, sites1...)

	for _, rel := range related {
		rel.R.CreatorUser = user0
	}

	return nil
}

func attachUserOrganization0(ctx context.Context, exec bob.Executor, count int, user0 *User, organization1 *Organization) (*User, error) {
	setter := &UserSetter{
		OrganizationID: omit.From(organization1.ID),
	}

	err := user0.Update(ctx, exec, setter)
	if err != nil {
		return nil, fmt.Errorf("attachUserOrganization0: %w", err)
	}

	return user0, nil
}

func (user0 *User) InsertOrganization(ctx context.Context, exec bob.Executor, related *OrganizationSetter) error {
	var err error

	organization1, err := Organizations.Insert(related).One(ctx, exec)
	if err != nil {
		return fmt.Errorf("inserting related objects: %w", err)
	}

	_, err = attachUserOrganization0(ctx, exec, 1, user0, organization1)
	if err != nil {
		return err
	}

	user0.R.Organization = organization1

	organization1.R.User = append(organization1.R.User, user0)

	return nil
}

func (user0 *User) AttachOrganization(ctx context.Context, exec bob.Executor, organization1 *Organization) error {
	var err error

	_, err = attachUserOrganization0(ctx, exec, 1, user0, organization1)
	if err != nil {
		return err
	}

	user0.R.Organization = organization1

	organization1.R.User = append(organization1.R.User, user0)

	return nil
}

type userWhere[Q psql.Filterable] struct {
	ID                        psql.WhereMod[Q, int32]
	ArcgisAccessToken         psql.WhereNullMod[Q, string]
	ArcgisLicense             psql.WhereNullMod[Q, enums.Arcgislicensetype]
	ArcgisRefreshToken        psql.WhereNullMod[Q, string]
	ArcgisRefreshTokenExpires psql.WhereNullMod[Q, time.Time]
	ArcgisRole                psql.WhereNullMod[Q, string]
	DisplayName               psql.WhereMod[Q, string]
	Email                     psql.WhereNullMod[Q, string]
	OrganizationID            psql.WhereMod[Q, int32]
	Username                  psql.WhereMod[Q, string]
	PasswordHashType          psql.WhereMod[Q, enums.Hashtype]
	PasswordHash              psql.WhereMod[Q, string]
	Role                      psql.WhereMod[Q, enums.Userrole]
	Avatar                    psql.WhereNullMod[Q, uuid.UUID]
	IsActive                  psql.WhereMod[Q, bool]
	IsDronePilot              psql.WhereMod[Q, bool]
	IsWarrant                 psql.WhereMod[Q, bool]
}

func (userWhere[Q]) AliasedAs(alias string) userWhere[Q] {
	return buildUserWhere[Q](buildUserColumns(alias))
}

func buildUserWhere[Q psql.Filterable](cols userColumns) userWhere[Q] {
	return userWhere[Q]{
		ID:                        psql.Where[Q, int32](cols.ID),
		ArcgisAccessToken:         psql.WhereNull[Q, string](cols.ArcgisAccessToken),
		ArcgisLicense:             psql.WhereNull[Q, enums.Arcgislicensetype](cols.ArcgisLicense),
		ArcgisRefreshToken:        psql.WhereNull[Q, string](cols.ArcgisRefreshToken),
		ArcgisRefreshTokenExpires: psql.WhereNull[Q, time.Time](cols.ArcgisRefreshTokenExpires),
		ArcgisRole:                psql.WhereNull[Q, string](cols.ArcgisRole),
		DisplayName:               psql.Where[Q, string](cols.DisplayName),
		Email:                     psql.WhereNull[Q, string](cols.Email),
		OrganizationID:            psql.Where[Q, int32](cols.OrganizationID),
		Username:                  psql.Where[Q, string](cols.Username),
		PasswordHashType:          psql.Where[Q, enums.Hashtype](cols.PasswordHashType),
		PasswordHash:              psql.Where[Q, string](cols.PasswordHash),
		Role:                      psql.Where[Q, enums.Userrole](cols.Role),
		Avatar:                    psql.WhereNull[Q, uuid.UUID](cols.Avatar),
		IsActive:                  psql.Where[Q, bool](cols.IsActive),
		IsDronePilot:              psql.Where[Q, bool](cols.IsDronePilot),
		IsWarrant:                 psql.Where[Q, bool](cols.IsWarrant),
	}
}

func (o *User) Preload(name string, retrieved any) error {
	if o == nil {
		return nil
	}

	switch name {
	case "CreatorTextJobs":
		rels, ok := retrieved.(CommsTextJobSlice)
		if !ok {
			return fmt.Errorf("user cannot load %T as %q", retrieved, name)
		}

		o.R.CreatorTextJobs = rels

		for _, rel := range rels {
			if rel != nil {
				rel.R.CreatorUser = o
			}
		}
		return nil
	case "CommunicationLogEntries":
		rels, ok := retrieved.(CommunicationLogEntrySlice)
		if !ok {
			return fmt.Errorf("user cannot load %T as %q", retrieved, name)
		}

		o.R.CommunicationLogEntries = rels

		for _, rel := range rels {
			if rel != nil {
				rel.R.User = o
			}
		}
		return nil
	case "CreatorComplianceReportRequests":
		rels, ok := retrieved.(ComplianceReportRequestSlice)
		if !ok {
			return fmt.Errorf("user cannot load %T as %q", retrieved, name)
		}

		o.R.CreatorComplianceReportRequests = rels

		for _, rel := range rels {
			if rel != nil {
				rel.R.CreatorUser = o
			}
		}
		return nil
	case "CreatorFeatures":
		rels, ok := retrieved.(FeatureSlice)
		if !ok {
			return fmt.Errorf("user cannot load %T as %q", retrieved, name)
		}

		o.R.CreatorFeatures = rels

		for _, rel := range rels {
			if rel != nil {
				rel.R.CreatorUser = o
			}
		}
		return nil
	case "CommitterFiles":
		rels, ok := retrieved.(FileuploadFileSlice)
		if !ok {
			return fmt.Errorf("user cannot load %T as %q", retrieved, name)
		}

		o.R.CommitterFiles = rels

		for _, rel := range rels {
			if rel != nil {
				rel.R.CommitterUser = o
			}
		}
		return nil
	case "CreatorFiles":
		rels, ok := retrieved.(FileuploadFileSlice)
		if !ok {
			return fmt.Errorf("user cannot load %T as %q", retrieved, name)
		}

		o.R.CreatorFiles = rels

		for _, rel := range rels {
			if rel != nil {
				rel.R.CreatorUser = o
			}
		}
		return nil
	case "FileuploadPool":
		rels, ok := retrieved.(FileuploadPoolSlice)
		if !ok {
			return fmt.Errorf("user cannot load %T as %q", retrieved, name)
		}

		o.R.FileuploadPool = rels

		for _, rel := range rels {
			if rel != nil {
				rel.R.CreatorUser = o
			}
		}
		return nil
	case "CreatorLeads":
		rels, ok := retrieved.(LeadSlice)
		if !ok {
			return fmt.Errorf("user cannot load %T as %q", retrieved, name)
		}

		o.R.CreatorLeads = rels

		for _, rel := range rels {
			if rel != nil {
				rel.R.CreatorUser = o
			}
		}
		return nil
	case "ImpersonatorLogImpersonations":
		rels, ok := retrieved.(LogImpersonationSlice)
		if !ok {
			return fmt.Errorf("user cannot load %T as %q", retrieved, name)
		}

		o.R.ImpersonatorLogImpersonations = rels

		for _, rel := range rels {
			if rel != nil {
				rel.R.ImpersonatorUser = o
			}
		}
		return nil
	case "TargetLogImpersonations":
		rels, ok := retrieved.(LogImpersonationSlice)
		if !ok {
			return fmt.Errorf("user cannot load %T as %q", retrieved, name)
		}

		o.R.TargetLogImpersonations = rels

		for _, rel := range rels {
			if rel != nil {
				rel.R.TargetUser = o
			}
		}
		return nil
	case "CreatorNoteAudios":
		rels, ok := retrieved.(NoteAudioSlice)
		if !ok {
			return fmt.Errorf("user cannot load %T as %q", retrieved, name)
		}

		o.R.CreatorNoteAudios = rels

		for _, rel := range rels {
			if rel != nil {
				rel.R.CreatorUser = o
			}
		}
		return nil
	case "DeletorNoteAudios":
		rels, ok := retrieved.(NoteAudioSlice)
		if !ok {
			return fmt.Errorf("user cannot load %T as %q", retrieved, name)
		}

		o.R.DeletorNoteAudios = rels

		for _, rel := range rels {
			if rel != nil {
				rel.R.DeletorUser = o
			}
		}
		return nil
	case "CreatorNoteImages":
		rels, ok := retrieved.(NoteImageSlice)
		if !ok {
			return fmt.Errorf("user cannot load %T as %q", retrieved, name)
		}

		o.R.CreatorNoteImages = rels

		for _, rel := range rels {
			if rel != nil {
				rel.R.CreatorUser = o
			}
		}
		return nil
	case "DeletorNoteImages":
		rels, ok := retrieved.(NoteImageSlice)
		if !ok {
			return fmt.Errorf("user cannot load %T as %q", retrieved, name)
		}

		o.R.DeletorNoteImages = rels

		for _, rel := range rels {
			if rel != nil {
				rel.R.DeletorUser = o
			}
		}
		return nil
	case "UserNotifications":
		rels, ok := retrieved.(NotificationSlice)
		if !ok {
			return fmt.Errorf("user cannot load %T as %q", retrieved, name)
		}

		o.R.UserNotifications = rels

		for _, rel := range rels {
			if rel != nil {
				rel.R.UserUser = o
			}
		}
		return nil
	case "ReviewerNuisanceOlds":
		rels, ok := retrieved.(PublicreportNuisanceOldSlice)
		if !ok {
			return fmt.Errorf("user cannot load %T as %q", retrieved, name)
		}

		o.R.ReviewerNuisanceOlds = rels

		for _, rel := range rels {
			if rel != nil {
				rel.R.ReviewerUser = o
			}
		}
		return nil
	case "ReviewerReports":
		rels, ok := retrieved.(PublicreportReportSlice)
		if !ok {
			return fmt.Errorf("user cannot load %T as %q", retrieved, name)
		}

		o.R.ReviewerReports = rels

		for _, rel := range rels {
			if rel != nil {
				rel.R.ReviewerUser = o
			}
		}
		return nil
	case "UserReportLogs":
		rels, ok := retrieved.(PublicreportReportLogSlice)
		if !ok {
			return fmt.Errorf("user cannot load %T as %q", retrieved, name)
		}

		o.R.UserReportLogs = rels

		for _, rel := range rels {
			if rel != nil {
				rel.R.UserUser = o
			}
		}
		return nil
	case "ReviewerWaterOlds":
		rels, ok := retrieved.(PublicreportWaterOldSlice)
		if !ok {
			return fmt.Errorf("user cannot load %T as %q", retrieved, name)
		}

		o.R.ReviewerWaterOlds = rels

		for _, rel := range rels {
			if rel != nil {
				rel.R.ReviewerUser = o
			}
		}
		return nil
	case "CreatorReportTexts":
		rels, ok := retrieved.(ReportTextSlice)
		if !ok {
			return fmt.Errorf("user cannot load %T as %q", retrieved, name)
		}

		o.R.CreatorReportTexts = rels

		for _, rel := range rels {
			if rel != nil {
				rel.R.CreatorUser = o
			}
		}
		return nil
	case "CreatorResidents":
		rels, ok := retrieved.(ResidentSlice)
		if !ok {
			return fmt.Errorf("user cannot load %T as %q", retrieved, name)
		}

		o.R.CreatorResidents = rels

		for _, rel := range rels {
			if rel != nil {
				rel.R.CreatorUser = o
			}
		}
		return nil
	case "CreatorReviewTasks":
		rels, ok := retrieved.(ReviewTaskSlice)
		if !ok {
			return fmt.Errorf("user cannot load %T as %q", retrieved, name)
		}

		o.R.CreatorReviewTasks = rels

		for _, rel := range rels {
			if rel != nil {
				rel.R.CreatorUser = o
			}
		}
		return nil
	case "ReviewerReviewTasks":
		rels, ok := retrieved.(ReviewTaskSlice)
		if !ok {
			return fmt.Errorf("user cannot load %T as %q", retrieved, name)
		}

		o.R.ReviewerReviewTasks = rels

		for _, rel := range rels {
			if rel != nil {
				rel.R.ReviewerUser = o
			}
		}
		return nil
	case "AddressorSignals":
		rels, ok := retrieved.(SignalSlice)
		if !ok {
			return fmt.Errorf("user cannot load %T as %q", retrieved, name)
		}

		o.R.AddressorSignals = rels

		for _, rel := range rels {
			if rel != nil {
				rel.R.AddressorUser = o
			}
		}
		return nil
	case "CreatorSignals":
		rels, ok := retrieved.(SignalSlice)
		if !ok {
			return fmt.Errorf("user cannot load %T as %q", retrieved, name)
		}

		o.R.CreatorSignals = rels

		for _, rel := range rels {
			if rel != nil {
				rel.R.CreatorUser = o
			}
		}
		return nil
	case "CreatorSites":
		rels, ok := retrieved.(SiteSlice)
		if !ok {
			return fmt.Errorf("user cannot load %T as %q", retrieved, name)
		}

		o.R.CreatorSites = rels

		for _, rel := range rels {
			if rel != nil {
				rel.R.CreatorUser = o
			}
		}
		return nil
	case "Organization":
		rel, ok := retrieved.(*Organization)
		if !ok {
			return fmt.Errorf("user cannot load %T as %q", retrieved, name)
		}

		o.R.Organization = rel

		if rel != nil {
			rel.R.User = UserSlice{o}
		}
		return nil
	default:
		return fmt.Errorf("user has no relationship %q", name)
	}
}

type userPreloader struct {
	Organization func(...psql.PreloadOption) psql.Preloader
}

func buildUserPreloader() userPreloader {
	return userPreloader{
		Organization: func(opts ...psql.PreloadOption) psql.Preloader {
			return psql.Preload[*Organization, OrganizationSlice](psql.PreloadRel{
				Name: "Organization",
				Sides: []psql.PreloadSide{
					{
						From:        Users,
						To:          Organizations,
						FromColumns: []string{"organization_id"},
						ToColumns:   []string{"id"},
					},
				},
			}, Organizations.Columns.Names(), opts...)
		},
	}
}

type userThenLoader[Q orm.Loadable] struct {
	CreatorTextJobs                 func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
	CommunicationLogEntries         func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
	CreatorComplianceReportRequests func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
	CreatorFeatures                 func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
	CommitterFiles                  func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
	CreatorFiles                    func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
	FileuploadPool                  func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
	CreatorLeads                    func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
	ImpersonatorLogImpersonations   func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
	TargetLogImpersonations         func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
	CreatorNoteAudios               func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
	DeletorNoteAudios               func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
	CreatorNoteImages               func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
	DeletorNoteImages               func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
	UserNotifications               func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
	ReviewerNuisanceOlds            func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
	ReviewerReports                 func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
	UserReportLogs                  func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
	ReviewerWaterOlds               func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
	CreatorReportTexts              func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
	CreatorResidents                func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
	CreatorReviewTasks              func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
	ReviewerReviewTasks             func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
	AddressorSignals                func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
	CreatorSignals                  func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
	CreatorSites                    func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
	Organization                    func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
}

func buildUserThenLoader[Q orm.Loadable]() userThenLoader[Q] {
	type CreatorTextJobsLoadInterface interface {
		LoadCreatorTextJobs(context.Context, bob.Executor, ...bob.Mod[*dialect.SelectQuery]) error
	}
	type CommunicationLogEntriesLoadInterface interface {
		LoadCommunicationLogEntries(context.Context, bob.Executor, ...bob.Mod[*dialect.SelectQuery]) error
	}
	type CreatorComplianceReportRequestsLoadInterface interface {
		LoadCreatorComplianceReportRequests(context.Context, bob.Executor, ...bob.Mod[*dialect.SelectQuery]) error
	}
	type CreatorFeaturesLoadInterface interface {
		LoadCreatorFeatures(context.Context, bob.Executor, ...bob.Mod[*dialect.SelectQuery]) error
	}
	type CommitterFilesLoadInterface interface {
		LoadCommitterFiles(context.Context, bob.Executor, ...bob.Mod[*dialect.SelectQuery]) error
	}
	type CreatorFilesLoadInterface interface {
		LoadCreatorFiles(context.Context, bob.Executor, ...bob.Mod[*dialect.SelectQuery]) error
	}
	type FileuploadPoolLoadInterface interface {
		LoadFileuploadPool(context.Context, bob.Executor, ...bob.Mod[*dialect.SelectQuery]) error
	}
	type CreatorLeadsLoadInterface interface {
		LoadCreatorLeads(context.Context, bob.Executor, ...bob.Mod[*dialect.SelectQuery]) error
	}
	type ImpersonatorLogImpersonationsLoadInterface interface {
		LoadImpersonatorLogImpersonations(context.Context, bob.Executor, ...bob.Mod[*dialect.SelectQuery]) error
	}
	type TargetLogImpersonationsLoadInterface interface {
		LoadTargetLogImpersonations(context.Context, bob.Executor, ...bob.Mod[*dialect.SelectQuery]) error
	}
	type CreatorNoteAudiosLoadInterface interface {
		LoadCreatorNoteAudios(context.Context, bob.Executor, ...bob.Mod[*dialect.SelectQuery]) error
	}
	type DeletorNoteAudiosLoadInterface interface {
		LoadDeletorNoteAudios(context.Context, bob.Executor, ...bob.Mod[*dialect.SelectQuery]) error
	}
	type CreatorNoteImagesLoadInterface interface {
		LoadCreatorNoteImages(context.Context, bob.Executor, ...bob.Mod[*dialect.SelectQuery]) error
	}
	type DeletorNoteImagesLoadInterface interface {
		LoadDeletorNoteImages(context.Context, bob.Executor, ...bob.Mod[*dialect.SelectQuery]) error
	}
	type UserNotificationsLoadInterface interface {
		LoadUserNotifications(context.Context, bob.Executor, ...bob.Mod[*dialect.SelectQuery]) error
	}
	type ReviewerNuisanceOldsLoadInterface interface {
		LoadReviewerNuisanceOlds(context.Context, bob.Executor, ...bob.Mod[*dialect.SelectQuery]) error
	}
	type ReviewerReportsLoadInterface interface {
		LoadReviewerReports(context.Context, bob.Executor, ...bob.Mod[*dialect.SelectQuery]) error
	}
	type UserReportLogsLoadInterface interface {
		LoadUserReportLogs(context.Context, bob.Executor, ...bob.Mod[*dialect.SelectQuery]) error
	}
	type ReviewerWaterOldsLoadInterface interface {
		LoadReviewerWaterOlds(context.Context, bob.Executor, ...bob.Mod[*dialect.SelectQuery]) error
	}
	type CreatorReportTextsLoadInterface interface {
		LoadCreatorReportTexts(context.Context, bob.Executor, ...bob.Mod[*dialect.SelectQuery]) error
	}
	type CreatorResidentsLoadInterface interface {
		LoadCreatorResidents(context.Context, bob.Executor, ...bob.Mod[*dialect.SelectQuery]) error
	}
	type CreatorReviewTasksLoadInterface interface {
		LoadCreatorReviewTasks(context.Context, bob.Executor, ...bob.Mod[*dialect.SelectQuery]) error
	}
	type ReviewerReviewTasksLoadInterface interface {
		LoadReviewerReviewTasks(context.Context, bob.Executor, ...bob.Mod[*dialect.SelectQuery]) error
	}
	type AddressorSignalsLoadInterface interface {
		LoadAddressorSignals(context.Context, bob.Executor, ...bob.Mod[*dialect.SelectQuery]) error
	}
	type CreatorSignalsLoadInterface interface {
		LoadCreatorSignals(context.Context, bob.Executor, ...bob.Mod[*dialect.SelectQuery]) error
	}
	type CreatorSitesLoadInterface interface {
		LoadCreatorSites(context.Context, bob.Executor, ...bob.Mod[*dialect.SelectQuery]) error
	}
	type OrganizationLoadInterface interface {
		LoadOrganization(context.Context, bob.Executor, ...bob.Mod[*dialect.SelectQuery]) error
	}

	return userThenLoader[Q]{
		CreatorTextJobs: thenLoadBuilder[Q](
			"CreatorTextJobs",
			func(ctx context.Context, exec bob.Executor, retrieved CreatorTextJobsLoadInterface, mods ...bob.Mod[*dialect.SelectQuery]) error {
				return retrieved.LoadCreatorTextJobs(ctx, exec, mods...)
			},
		),
		CommunicationLogEntries: thenLoadBuilder[Q](
			"CommunicationLogEntries",
			func(ctx context.Context, exec bob.Executor, retrieved CommunicationLogEntriesLoadInterface, mods ...bob.Mod[*dialect.SelectQuery]) error {
				return retrieved.LoadCommunicationLogEntries(ctx, exec, mods...)
			},
		),
		CreatorComplianceReportRequests: thenLoadBuilder[Q](
			"CreatorComplianceReportRequests",
			func(ctx context.Context, exec bob.Executor, retrieved CreatorComplianceReportRequestsLoadInterface, mods ...bob.Mod[*dialect.SelectQuery]) error {
				return retrieved.LoadCreatorComplianceReportRequests(ctx, exec, mods...)
			},
		),
		CreatorFeatures: thenLoadBuilder[Q](
			"CreatorFeatures",
			func(ctx context.Context, exec bob.Executor, retrieved CreatorFeaturesLoadInterface, mods ...bob.Mod[*dialect.SelectQuery]) error {
				return retrieved.LoadCreatorFeatures(ctx, exec, mods...)
			},
		),
		CommitterFiles: thenLoadBuilder[Q](
			"CommitterFiles",
			func(ctx context.Context, exec bob.Executor, retrieved CommitterFilesLoadInterface, mods ...bob.Mod[*dialect.SelectQuery]) error {
				return retrieved.LoadCommitterFiles(ctx, exec, mods...)
			},
		),
		CreatorFiles: thenLoadBuilder[Q](
			"CreatorFiles",
			func(ctx context.Context, exec bob.Executor, retrieved CreatorFilesLoadInterface, mods ...bob.Mod[*dialect.SelectQuery]) error {
				return retrieved.LoadCreatorFiles(ctx, exec, mods...)
			},
		),
		FileuploadPool: thenLoadBuilder[Q](
			"FileuploadPool",
			func(ctx context.Context, exec bob.Executor, retrieved FileuploadPoolLoadInterface, mods ...bob.Mod[*dialect.SelectQuery]) error {
				return retrieved.LoadFileuploadPool(ctx, exec, mods...)
			},
		),
		CreatorLeads: thenLoadBuilder[Q](
			"CreatorLeads",
			func(ctx context.Context, exec bob.Executor, retrieved CreatorLeadsLoadInterface, mods ...bob.Mod[*dialect.SelectQuery]) error {
				return retrieved.LoadCreatorLeads(ctx, exec, mods...)
			},
		),
		ImpersonatorLogImpersonations: thenLoadBuilder[Q](
			"ImpersonatorLogImpersonations",
			func(ctx context.Context, exec bob.Executor, retrieved ImpersonatorLogImpersonationsLoadInterface, mods ...bob.Mod[*dialect.SelectQuery]) error {
				return retrieved.LoadImpersonatorLogImpersonations(ctx, exec, mods...)
			},
		),
		TargetLogImpersonations: thenLoadBuilder[Q](
			"TargetLogImpersonations",
			func(ctx context.Context, exec bob.Executor, retrieved TargetLogImpersonationsLoadInterface, mods ...bob.Mod[*dialect.SelectQuery]) error {
				return retrieved.LoadTargetLogImpersonations(ctx, exec, mods...)
			},
		),
		CreatorNoteAudios: thenLoadBuilder[Q](
			"CreatorNoteAudios",
			func(ctx context.Context, exec bob.Executor, retrieved CreatorNoteAudiosLoadInterface, mods ...bob.Mod[*dialect.SelectQuery]) error {
				return retrieved.LoadCreatorNoteAudios(ctx, exec, mods...)
			},
		),
		DeletorNoteAudios: thenLoadBuilder[Q](
			"DeletorNoteAudios",
			func(ctx context.Context, exec bob.Executor, retrieved DeletorNoteAudiosLoadInterface, mods ...bob.Mod[*dialect.SelectQuery]) error {
				return retrieved.LoadDeletorNoteAudios(ctx, exec, mods...)
			},
		),
		CreatorNoteImages: thenLoadBuilder[Q](
			"CreatorNoteImages",
			func(ctx context.Context, exec bob.Executor, retrieved CreatorNoteImagesLoadInterface, mods ...bob.Mod[*dialect.SelectQuery]) error {
				return retrieved.LoadCreatorNoteImages(ctx, exec, mods...)
			},
		),
		DeletorNoteImages: thenLoadBuilder[Q](
			"DeletorNoteImages",
			func(ctx context.Context, exec bob.Executor, retrieved DeletorNoteImagesLoadInterface, mods ...bob.Mod[*dialect.SelectQuery]) error {
				return retrieved.LoadDeletorNoteImages(ctx, exec, mods...)
			},
		),
		UserNotifications: thenLoadBuilder[Q](
			"UserNotifications",
			func(ctx context.Context, exec bob.Executor, retrieved UserNotificationsLoadInterface, mods ...bob.Mod[*dialect.SelectQuery]) error {
				return retrieved.LoadUserNotifications(ctx, exec, mods...)
			},
		),
		ReviewerNuisanceOlds: thenLoadBuilder[Q](
			"ReviewerNuisanceOlds",
			func(ctx context.Context, exec bob.Executor, retrieved ReviewerNuisanceOldsLoadInterface, mods ...bob.Mod[*dialect.SelectQuery]) error {
				return retrieved.LoadReviewerNuisanceOlds(ctx, exec, mods...)
			},
		),
		ReviewerReports: thenLoadBuilder[Q](
			"ReviewerReports",
			func(ctx context.Context, exec bob.Executor, retrieved ReviewerReportsLoadInterface, mods ...bob.Mod[*dialect.SelectQuery]) error {
				return retrieved.LoadReviewerReports(ctx, exec, mods...)
			},
		),
		UserReportLogs: thenLoadBuilder[Q](
			"UserReportLogs",
			func(ctx context.Context, exec bob.Executor, retrieved UserReportLogsLoadInterface, mods ...bob.Mod[*dialect.SelectQuery]) error {
				return retrieved.LoadUserReportLogs(ctx, exec, mods...)
			},
		),
		ReviewerWaterOlds: thenLoadBuilder[Q](
			"ReviewerWaterOlds",
			func(ctx context.Context, exec bob.Executor, retrieved ReviewerWaterOldsLoadInterface, mods ...bob.Mod[*dialect.SelectQuery]) error {
				return retrieved.LoadReviewerWaterOlds(ctx, exec, mods...)
			},
		),
		CreatorReportTexts: thenLoadBuilder[Q](
			"CreatorReportTexts",
			func(ctx context.Context, exec bob.Executor, retrieved CreatorReportTextsLoadInterface, mods ...bob.Mod[*dialect.SelectQuery]) error {
				return retrieved.LoadCreatorReportTexts(ctx, exec, mods...)
			},
		),
		CreatorResidents: thenLoadBuilder[Q](
			"CreatorResidents",
			func(ctx context.Context, exec bob.Executor, retrieved CreatorResidentsLoadInterface, mods ...bob.Mod[*dialect.SelectQuery]) error {
				return retrieved.LoadCreatorResidents(ctx, exec, mods...)
			},
		),
		CreatorReviewTasks: thenLoadBuilder[Q](
			"CreatorReviewTasks",
			func(ctx context.Context, exec bob.Executor, retrieved CreatorReviewTasksLoadInterface, mods ...bob.Mod[*dialect.SelectQuery]) error {
				return retrieved.LoadCreatorReviewTasks(ctx, exec, mods...)
			},
		),
		ReviewerReviewTasks: thenLoadBuilder[Q](
			"ReviewerReviewTasks",
			func(ctx context.Context, exec bob.Executor, retrieved ReviewerReviewTasksLoadInterface, mods ...bob.Mod[*dialect.SelectQuery]) error {
				return retrieved.LoadReviewerReviewTasks(ctx, exec, mods...)
			},
		),
		AddressorSignals: thenLoadBuilder[Q](
			"AddressorSignals",
			func(ctx context.Context, exec bob.Executor, retrieved AddressorSignalsLoadInterface, mods ...bob.Mod[*dialect.SelectQuery]) error {
				return retrieved.LoadAddressorSignals(ctx, exec, mods...)
			},
		),
		CreatorSignals: thenLoadBuilder[Q](
			"CreatorSignals",
			func(ctx context.Context, exec bob.Executor, retrieved CreatorSignalsLoadInterface, mods ...bob.Mod[*dialect.SelectQuery]) error {
				return retrieved.LoadCreatorSignals(ctx, exec, mods...)
			},
		),
		CreatorSites: thenLoadBuilder[Q](
			"CreatorSites",
			func(ctx context.Context, exec bob.Executor, retrieved CreatorSitesLoadInterface, mods ...bob.Mod[*dialect.SelectQuery]) error {
				return retrieved.LoadCreatorSites(ctx, exec, mods...)
			},
		),
		Organization: thenLoadBuilder[Q](
			"Organization",
			func(ctx context.Context, exec bob.Executor, retrieved OrganizationLoadInterface, mods ...bob.Mod[*dialect.SelectQuery]) error {
				return retrieved.LoadOrganization(ctx, exec, mods...)
			},
		),
	}
}

// LoadCreatorTextJobs loads the user's CreatorTextJobs into the .R struct
func (o *User) LoadCreatorTextJobs(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
	if o == nil {
		return nil
	}

	// Reset the relationship
	o.R.CreatorTextJobs = nil

	related, err := o.CreatorTextJobs(mods...).All(ctx, exec)
	if err != nil {
		return err
	}

	for _, rel := range related {
		rel.R.CreatorUser = o
	}

	o.R.CreatorTextJobs = related
	return nil
}

// LoadCreatorTextJobs loads the user's CreatorTextJobs into the .R struct
func (os UserSlice) LoadCreatorTextJobs(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
	if len(os) == 0 {
		return nil
	}

	commsTextJobs, err := os.CreatorTextJobs(mods...).All(ctx, exec)
	if err != nil {
		return err
	}

	for _, o := range os {
		if o == nil {
			continue
		}

		o.R.CreatorTextJobs = nil
	}

	for _, o := range os {
		if o == nil {
			continue
		}

		for _, rel := range commsTextJobs {

			if !rel.CreatorID.IsValue() {
				continue
			}
			if !(rel.CreatorID.IsValue() && o.ID == rel.CreatorID.MustGet()) {
				continue
			}

			rel.R.CreatorUser = o

			o.R.CreatorTextJobs = append(o.R.CreatorTextJobs, rel)
		}
	}

	return nil
}

// LoadCommunicationLogEntries loads the user's CommunicationLogEntries into the .R struct
func (o *User) LoadCommunicationLogEntries(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
	if o == nil {
		return nil
	}

	// Reset the relationship
	o.R.CommunicationLogEntries = nil

	related, err := o.CommunicationLogEntries(mods...).All(ctx, exec)
	if err != nil {
		return err
	}

	for _, rel := range related {
		rel.R.User = o
	}

	o.R.CommunicationLogEntries = related
	return nil
}

// LoadCommunicationLogEntries loads the user's CommunicationLogEntries into the .R struct
func (os UserSlice) LoadCommunicationLogEntries(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
	if len(os) == 0 {
		return nil
	}

	communicationLogEntries, err := os.CommunicationLogEntries(mods...).All(ctx, exec)
	if err != nil {
		return err
	}

	for _, o := range os {
		if o == nil {
			continue
		}

		o.R.CommunicationLogEntries = nil
	}

	for _, o := range os {
		if o == nil {
			continue
		}

		for _, rel := range communicationLogEntries {

			if !rel.User.IsValue() {
				continue
			}
			if !(rel.User.IsValue() && o.ID == rel.User.MustGet()) {
				continue
			}

			rel.R.User = o

			o.R.CommunicationLogEntries = append(o.R.CommunicationLogEntries, rel)
		}
	}

	return nil
}

// LoadCreatorComplianceReportRequests loads the user's CreatorComplianceReportRequests into the .R struct
func (o *User) LoadCreatorComplianceReportRequests(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
	if o == nil {
		return nil
	}

	// Reset the relationship
	o.R.CreatorComplianceReportRequests = nil

	related, err := o.CreatorComplianceReportRequests(mods...).All(ctx, exec)
	if err != nil {
		return err
	}

	for _, rel := range related {
		rel.R.CreatorUser = o
	}

	o.R.CreatorComplianceReportRequests = related
	return nil
}

// LoadCreatorComplianceReportRequests loads the user's CreatorComplianceReportRequests into the .R struct
func (os UserSlice) LoadCreatorComplianceReportRequests(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
	if len(os) == 0 {
		return nil
	}

	complianceReportRequests, err := os.CreatorComplianceReportRequests(mods...).All(ctx, exec)
	if err != nil {
		return err
	}

	for _, o := range os {
		if o == nil {
			continue
		}

		o.R.CreatorComplianceReportRequests = nil
	}

	for _, o := range os {
		if o == nil {
			continue
		}

		for _, rel := range complianceReportRequests {

			if !(o.ID == rel.Creator) {
				continue
			}

			rel.R.CreatorUser = o

			o.R.CreatorComplianceReportRequests = append(o.R.CreatorComplianceReportRequests, rel)
		}
	}

	return nil
}

// LoadCreatorFeatures loads the user's CreatorFeatures into the .R struct
func (o *User) LoadCreatorFeatures(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
	if o == nil {
		return nil
	}

	// Reset the relationship
	o.R.CreatorFeatures = nil

	related, err := o.CreatorFeatures(mods...).All(ctx, exec)
	if err != nil {
		return err
	}

	for _, rel := range related {
		rel.R.CreatorUser = o
	}

	o.R.CreatorFeatures = related
	return nil
}

// LoadCreatorFeatures loads the user's CreatorFeatures into the .R struct
func (os UserSlice) LoadCreatorFeatures(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
	if len(os) == 0 {
		return nil
	}

	features, err := os.CreatorFeatures(mods...).All(ctx, exec)
	if err != nil {
		return err
	}

	for _, o := range os {
		if o == nil {
			continue
		}

		o.R.CreatorFeatures = nil
	}

	for _, o := range os {
		if o == nil {
			continue
		}

		for _, rel := range features {

			if !(o.ID == rel.CreatorID) {
				continue
			}

			rel.R.CreatorUser = o

			o.R.CreatorFeatures = append(o.R.CreatorFeatures, rel)
		}
	}

	return nil
}

// LoadCommitterFiles loads the user's CommitterFiles into the .R struct
func (o *User) LoadCommitterFiles(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
	if o == nil {
		return nil
	}

	// Reset the relationship
	o.R.CommitterFiles = nil

	related, err := o.CommitterFiles(mods...).All(ctx, exec)
	if err != nil {
		return err
	}

	for _, rel := range related {
		rel.R.CommitterUser = o
	}

	o.R.CommitterFiles = related
	return nil
}

// LoadCommitterFiles loads the user's CommitterFiles into the .R struct
func (os UserSlice) LoadCommitterFiles(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
	if len(os) == 0 {
		return nil
	}

	fileuploadFiles, err := os.CommitterFiles(mods...).All(ctx, exec)
	if err != nil {
		return err
	}

	for _, o := range os {
		if o == nil {
			continue
		}

		o.R.CommitterFiles = nil
	}

	for _, o := range os {
		if o == nil {
			continue
		}

		for _, rel := range fileuploadFiles {

			if !rel.Committer.IsValue() {
				continue
			}
			if !(rel.Committer.IsValue() && o.ID == rel.Committer.MustGet()) {
				continue
			}

			rel.R.CommitterUser = o

			o.R.CommitterFiles = append(o.R.CommitterFiles, rel)
		}
	}

	return nil
}

// LoadCreatorFiles loads the user's CreatorFiles into the .R struct
func (o *User) LoadCreatorFiles(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
	if o == nil {
		return nil
	}

	// Reset the relationship
	o.R.CreatorFiles = nil

	related, err := o.CreatorFiles(mods...).All(ctx, exec)
	if err != nil {
		return err
	}

	for _, rel := range related {
		rel.R.CreatorUser = o
	}

	o.R.CreatorFiles = related
	return nil
}

// LoadCreatorFiles loads the user's CreatorFiles into the .R struct
func (os UserSlice) LoadCreatorFiles(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
	if len(os) == 0 {
		return nil
	}

	fileuploadFiles, err := os.CreatorFiles(mods...).All(ctx, exec)
	if err != nil {
		return err
	}

	for _, o := range os {
		if o == nil {
			continue
		}

		o.R.CreatorFiles = nil
	}

	for _, o := range os {
		if o == nil {
			continue
		}

		for _, rel := range fileuploadFiles {

			if !(o.ID == rel.CreatorID) {
				continue
			}

			rel.R.CreatorUser = o

			o.R.CreatorFiles = append(o.R.CreatorFiles, rel)
		}
	}

	return nil
}

// LoadFileuploadPool loads the user's FileuploadPool into the .R struct
func (o *User) LoadFileuploadPool(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
	if o == nil {
		return nil
	}

	// Reset the relationship
	o.R.FileuploadPool = nil

	related, err := o.FileuploadPool(mods...).All(ctx, exec)
	if err != nil {
		return err
	}

	for _, rel := range related {
		rel.R.CreatorUser = o
	}

	o.R.FileuploadPool = related
	return nil
}

// LoadFileuploadPool loads the user's FileuploadPool into the .R struct
func (os UserSlice) LoadFileuploadPool(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
	if len(os) == 0 {
		return nil
	}

	fileuploadPools, err := os.FileuploadPool(mods...).All(ctx, exec)
	if err != nil {
		return err
	}

	for _, o := range os {
		if o == nil {
			continue
		}

		o.R.FileuploadPool = nil
	}

	for _, o := range os {
		if o == nil {
			continue
		}

		for _, rel := range fileuploadPools {

			if !(o.ID == rel.CreatorID) {
				continue
			}

			rel.R.CreatorUser = o

			o.R.FileuploadPool = append(o.R.FileuploadPool, rel)
		}
	}

	return nil
}

// LoadCreatorLeads loads the user's CreatorLeads into the .R struct
func (o *User) LoadCreatorLeads(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
	if o == nil {
		return nil
	}

	// Reset the relationship
	o.R.CreatorLeads = nil

	related, err := o.CreatorLeads(mods...).All(ctx, exec)
	if err != nil {
		return err
	}

	for _, rel := range related {
		rel.R.CreatorUser = o
	}

	o.R.CreatorLeads = related
	return nil
}

// LoadCreatorLeads loads the user's CreatorLeads into the .R struct
func (os UserSlice) LoadCreatorLeads(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
	if len(os) == 0 {
		return nil
	}

	leads, err := os.CreatorLeads(mods...).All(ctx, exec)
	if err != nil {
		return err
	}

	for _, o := range os {
		if o == nil {
			continue
		}

		o.R.CreatorLeads = nil
	}

	for _, o := range os {
		if o == nil {
			continue
		}

		for _, rel := range leads {

			if !(o.ID == rel.Creator) {
				continue
			}

			rel.R.CreatorUser = o

			o.R.CreatorLeads = append(o.R.CreatorLeads, rel)
		}
	}

	return nil
}

// LoadImpersonatorLogImpersonations loads the user's ImpersonatorLogImpersonations into the .R struct
func (o *User) LoadImpersonatorLogImpersonations(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
	if o == nil {
		return nil
	}

	// Reset the relationship
	o.R.ImpersonatorLogImpersonations = nil

	related, err := o.ImpersonatorLogImpersonations(mods...).All(ctx, exec)
	if err != nil {
		return err
	}

	for _, rel := range related {
		rel.R.ImpersonatorUser = o
	}

	o.R.ImpersonatorLogImpersonations = related
	return nil
}

// LoadImpersonatorLogImpersonations loads the user's ImpersonatorLogImpersonations into the .R struct
func (os UserSlice) LoadImpersonatorLogImpersonations(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
	if len(os) == 0 {
		return nil
	}

	logImpersonations, err := os.ImpersonatorLogImpersonations(mods...).All(ctx, exec)
	if err != nil {
		return err
	}

	for _, o := range os {
		if o == nil {
			continue
		}

		o.R.ImpersonatorLogImpersonations = nil
	}

	for _, o := range os {
		if o == nil {
			continue
		}

		for _, rel := range logImpersonations {

			if !(o.ID == rel.ImpersonatorID) {
				continue
			}

			rel.R.ImpersonatorUser = o

			o.R.ImpersonatorLogImpersonations = append(o.R.ImpersonatorLogImpersonations, rel)
		}
	}

	return nil
}

// LoadTargetLogImpersonations loads the user's TargetLogImpersonations into the .R struct
func (o *User) LoadTargetLogImpersonations(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
	if o == nil {
		return nil
	}

	// Reset the relationship
	o.R.TargetLogImpersonations = nil

	related, err := o.TargetLogImpersonations(mods...).All(ctx, exec)
	if err != nil {
		return err
	}

	for _, rel := range related {
		rel.R.TargetUser = o
	}

	o.R.TargetLogImpersonations = related
	return nil
}

// LoadTargetLogImpersonations loads the user's TargetLogImpersonations into the .R struct
func (os UserSlice) LoadTargetLogImpersonations(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
	if len(os) == 0 {
		return nil
	}

	logImpersonations, err := os.TargetLogImpersonations(mods...).All(ctx, exec)
	if err != nil {
		return err
	}

	for _, o := range os {
		if o == nil {
			continue
		}

		o.R.TargetLogImpersonations = nil
	}

	for _, o := range os {
		if o == nil {
			continue
		}

		for _, rel := range logImpersonations {

			if !(o.ID == rel.TargetID) {
				continue
			}

			rel.R.TargetUser = o

			o.R.TargetLogImpersonations = append(o.R.TargetLogImpersonations, rel)
		}
	}

	return nil
}

// LoadCreatorNoteAudios loads the user's CreatorNoteAudios into the .R struct
func (o *User) LoadCreatorNoteAudios(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
	if o == nil {
		return nil
	}

	// Reset the relationship
	o.R.CreatorNoteAudios = nil

	related, err := o.CreatorNoteAudios(mods...).All(ctx, exec)
	if err != nil {
		return err
	}

	for _, rel := range related {
		rel.R.CreatorUser = o
	}

	o.R.CreatorNoteAudios = related
	return nil
}

// LoadCreatorNoteAudios loads the user's CreatorNoteAudios into the .R struct
func (os UserSlice) LoadCreatorNoteAudios(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
	if len(os) == 0 {
		return nil
	}

	noteAudios, err := os.CreatorNoteAudios(mods...).All(ctx, exec)
	if err != nil {
		return err
	}

	for _, o := range os {
		if o == nil {
			continue
		}

		o.R.CreatorNoteAudios = nil
	}

	for _, o := range os {
		if o == nil {
			continue
		}

		for _, rel := range noteAudios {

			if !(o.ID == rel.CreatorID) {
				continue
			}

			rel.R.CreatorUser = o

			o.R.CreatorNoteAudios = append(o.R.CreatorNoteAudios, rel)
		}
	}

	return nil
}

// LoadDeletorNoteAudios loads the user's DeletorNoteAudios into the .R struct
func (o *User) LoadDeletorNoteAudios(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
	if o == nil {
		return nil
	}

	// Reset the relationship
	o.R.DeletorNoteAudios = nil

	related, err := o.DeletorNoteAudios(mods...).All(ctx, exec)
	if err != nil {
		return err
	}

	for _, rel := range related {
		rel.R.DeletorUser = o
	}

	o.R.DeletorNoteAudios = related
	return nil
}

// LoadDeletorNoteAudios loads the user's DeletorNoteAudios into the .R struct
func (os UserSlice) LoadDeletorNoteAudios(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
	if len(os) == 0 {
		return nil
	}

	noteAudios, err := os.DeletorNoteAudios(mods...).All(ctx, exec)
	if err != nil {
		return err
	}

	for _, o := range os {
		if o == nil {
			continue
		}

		o.R.DeletorNoteAudios = nil
	}

	for _, o := range os {
		if o == nil {
			continue
		}

		for _, rel := range noteAudios {

			if !rel.DeletorID.IsValue() {
				continue
			}
			if !(rel.DeletorID.IsValue() && o.ID == rel.DeletorID.MustGet()) {
				continue
			}

			rel.R.DeletorUser = o

			o.R.DeletorNoteAudios = append(o.R.DeletorNoteAudios, rel)
		}
	}

	return nil
}

// LoadCreatorNoteImages loads the user's CreatorNoteImages into the .R struct
func (o *User) LoadCreatorNoteImages(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
	if o == nil {
		return nil
	}

	// Reset the relationship
	o.R.CreatorNoteImages = nil

	related, err := o.CreatorNoteImages(mods...).All(ctx, exec)
	if err != nil {
		return err
	}

	for _, rel := range related {
		rel.R.CreatorUser = o
	}

	o.R.CreatorNoteImages = related
	return nil
}

// LoadCreatorNoteImages loads the user's CreatorNoteImages into the .R struct
func (os UserSlice) LoadCreatorNoteImages(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
	if len(os) == 0 {
		return nil
	}

	noteImages, err := os.CreatorNoteImages(mods...).All(ctx, exec)
	if err != nil {
		return err
	}

	for _, o := range os {
		if o == nil {
			continue
		}

		o.R.CreatorNoteImages = nil
	}

	for _, o := range os {
		if o == nil {
			continue
		}

		for _, rel := range noteImages {

			if !(o.ID == rel.CreatorID) {
				continue
			}

			rel.R.CreatorUser = o

			o.R.CreatorNoteImages = append(o.R.CreatorNoteImages, rel)
		}
	}

	return nil
}

// LoadDeletorNoteImages loads the user's DeletorNoteImages into the .R struct
func (o *User) LoadDeletorNoteImages(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
	if o == nil {
		return nil
	}

	// Reset the relationship
	o.R.DeletorNoteImages = nil

	related, err := o.DeletorNoteImages(mods...).All(ctx, exec)
	if err != nil {
		return err
	}

	for _, rel := range related {
		rel.R.DeletorUser = o
	}

	o.R.DeletorNoteImages = related
	return nil
}

// LoadDeletorNoteImages loads the user's DeletorNoteImages into the .R struct
func (os UserSlice) LoadDeletorNoteImages(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
	if len(os) == 0 {
		return nil
	}

	noteImages, err := os.DeletorNoteImages(mods...).All(ctx, exec)
	if err != nil {
		return err
	}

	for _, o := range os {
		if o == nil {
			continue
		}

		o.R.DeletorNoteImages = nil
	}

	for _, o := range os {
		if o == nil {
			continue
		}

		for _, rel := range noteImages {

			if !rel.DeletorID.IsValue() {
				continue
			}
			if !(rel.DeletorID.IsValue() && o.ID == rel.DeletorID.MustGet()) {
				continue
			}

			rel.R.DeletorUser = o

			o.R.DeletorNoteImages = append(o.R.DeletorNoteImages, rel)
		}
	}

	return nil
}

// LoadUserNotifications loads the user's UserNotifications into the .R struct
func (o *User) LoadUserNotifications(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
	if o == nil {
		return nil
	}

	// Reset the relationship
	o.R.UserNotifications = nil

	related, err := o.UserNotifications(mods...).All(ctx, exec)
	if err != nil {
		return err
	}

	for _, rel := range related {
		rel.R.UserUser = o
	}

	o.R.UserNotifications = related
	return nil
}

// LoadUserNotifications loads the user's UserNotifications into the .R struct
func (os UserSlice) LoadUserNotifications(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
	if len(os) == 0 {
		return nil
	}

	notifications, err := os.UserNotifications(mods...).All(ctx, exec)
	if err != nil {
		return err
	}

	for _, o := range os {
		if o == nil {
			continue
		}

		o.R.UserNotifications = nil
	}

	for _, o := range os {
		if o == nil {
			continue
		}

		for _, rel := range notifications {

			if !(o.ID == rel.UserID) {
				continue
			}

			rel.R.UserUser = o

			o.R.UserNotifications = append(o.R.UserNotifications, rel)
		}
	}

	return nil
}

// LoadReviewerNuisanceOlds loads the user's ReviewerNuisanceOlds into the .R struct
func (o *User) LoadReviewerNuisanceOlds(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
	if o == nil {
		return nil
	}

	// Reset the relationship
	o.R.ReviewerNuisanceOlds = nil

	related, err := o.ReviewerNuisanceOlds(mods...).All(ctx, exec)
	if err != nil {
		return err
	}

	for _, rel := range related {
		rel.R.ReviewerUser = o
	}

	o.R.ReviewerNuisanceOlds = related
	return nil
}

// LoadReviewerNuisanceOlds loads the user's ReviewerNuisanceOlds into the .R struct
func (os UserSlice) LoadReviewerNuisanceOlds(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
	if len(os) == 0 {
		return nil
	}

	publicreportNuisanceOlds, err := os.ReviewerNuisanceOlds(mods...).All(ctx, exec)
	if err != nil {
		return err
	}

	for _, o := range os {
		if o == nil {
			continue
		}

		o.R.ReviewerNuisanceOlds = nil
	}

	for _, o := range os {
		if o == nil {
			continue
		}

		for _, rel := range publicreportNuisanceOlds {

			if !rel.ReviewerID.IsValue() {
				continue
			}
			if !(rel.ReviewerID.IsValue() && o.ID == rel.ReviewerID.MustGet()) {
				continue
			}

			rel.R.ReviewerUser = o

			o.R.ReviewerNuisanceOlds = append(o.R.ReviewerNuisanceOlds, rel)
		}
	}

	return nil
}

// LoadReviewerReports loads the user's ReviewerReports into the .R struct
func (o *User) LoadReviewerReports(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
	if o == nil {
		return nil
	}

	// Reset the relationship
	o.R.ReviewerReports = nil

	related, err := o.ReviewerReports(mods...).All(ctx, exec)
	if err != nil {
		return err
	}

	for _, rel := range related {
		rel.R.ReviewerUser = o
	}

	o.R.ReviewerReports = related
	return nil
}

// LoadReviewerReports loads the user's ReviewerReports into the .R struct
func (os UserSlice) LoadReviewerReports(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
	if len(os) == 0 {
		return nil
	}

	publicreportReports, err := os.ReviewerReports(mods...).All(ctx, exec)
	if err != nil {
		return err
	}

	for _, o := range os {
		if o == nil {
			continue
		}

		o.R.ReviewerReports = nil
	}

	for _, o := range os {
		if o == nil {
			continue
		}

		for _, rel := range publicreportReports {

			if !rel.ReviewerID.IsValue() {
				continue
			}
			if !(rel.ReviewerID.IsValue() && o.ID == rel.ReviewerID.MustGet()) {
				continue
			}

			rel.R.ReviewerUser = o

			o.R.ReviewerReports = append(o.R.ReviewerReports, rel)
		}
	}

	return nil
}

// LoadUserReportLogs loads the user's UserReportLogs into the .R struct
func (o *User) LoadUserReportLogs(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
	if o == nil {
		return nil
	}

	// Reset the relationship
	o.R.UserReportLogs = nil

	related, err := o.UserReportLogs(mods...).All(ctx, exec)
	if err != nil {
		return err
	}

	for _, rel := range related {
		rel.R.UserUser = o
	}

	o.R.UserReportLogs = related
	return nil
}

// LoadUserReportLogs loads the user's UserReportLogs into the .R struct
func (os UserSlice) LoadUserReportLogs(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
	if len(os) == 0 {
		return nil
	}

	publicreportReportLogs, err := os.UserReportLogs(mods...).All(ctx, exec)
	if err != nil {
		return err
	}

	for _, o := range os {
		if o == nil {
			continue
		}

		o.R.UserReportLogs = nil
	}

	for _, o := range os {
		if o == nil {
			continue
		}

		for _, rel := range publicreportReportLogs {

			if !rel.UserID.IsValue() {
				continue
			}
			if !(rel.UserID.IsValue() && o.ID == rel.UserID.MustGet()) {
				continue
			}

			rel.R.UserUser = o

			o.R.UserReportLogs = append(o.R.UserReportLogs, rel)
		}
	}

	return nil
}

// LoadReviewerWaterOlds loads the user's ReviewerWaterOlds into the .R struct
func (o *User) LoadReviewerWaterOlds(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
	if o == nil {
		return nil
	}

	// Reset the relationship
	o.R.ReviewerWaterOlds = nil

	related, err := o.ReviewerWaterOlds(mods...).All(ctx, exec)
	if err != nil {
		return err
	}

	for _, rel := range related {
		rel.R.ReviewerUser = o
	}

	o.R.ReviewerWaterOlds = related
	return nil
}

// LoadReviewerWaterOlds loads the user's ReviewerWaterOlds into the .R struct
func (os UserSlice) LoadReviewerWaterOlds(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
	if len(os) == 0 {
		return nil
	}

	publicreportWaterOlds, err := os.ReviewerWaterOlds(mods...).All(ctx, exec)
	if err != nil {
		return err
	}

	for _, o := range os {
		if o == nil {
			continue
		}

		o.R.ReviewerWaterOlds = nil
	}

	for _, o := range os {
		if o == nil {
			continue
		}

		for _, rel := range publicreportWaterOlds {

			if !rel.ReviewerID.IsValue() {
				continue
			}
			if !(rel.ReviewerID.IsValue() && o.ID == rel.ReviewerID.MustGet()) {
				continue
			}

			rel.R.ReviewerUser = o

			o.R.ReviewerWaterOlds = append(o.R.ReviewerWaterOlds, rel)
		}
	}

	return nil
}

// LoadCreatorReportTexts loads the user's CreatorReportTexts into the .R struct
func (o *User) LoadCreatorReportTexts(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
	if o == nil {
		return nil
	}

	// Reset the relationship
	o.R.CreatorReportTexts = nil

	related, err := o.CreatorReportTexts(mods...).All(ctx, exec)
	if err != nil {
		return err
	}

	for _, rel := range related {
		rel.R.CreatorUser = o
	}

	o.R.CreatorReportTexts = related
	return nil
}

// LoadCreatorReportTexts loads the user's CreatorReportTexts into the .R struct
func (os UserSlice) LoadCreatorReportTexts(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
	if len(os) == 0 {
		return nil
	}

	reportTexts, err := os.CreatorReportTexts(mods...).All(ctx, exec)
	if err != nil {
		return err
	}

	for _, o := range os {
		if o == nil {
			continue
		}

		o.R.CreatorReportTexts = nil
	}

	for _, o := range os {
		if o == nil {
			continue
		}

		for _, rel := range reportTexts {

			if !(o.ID == rel.CreatorID) {
				continue
			}

			rel.R.CreatorUser = o

			o.R.CreatorReportTexts = append(o.R.CreatorReportTexts, rel)
		}
	}

	return nil
}

// LoadCreatorResidents loads the user's CreatorResidents into the .R struct
func (o *User) LoadCreatorResidents(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
	if o == nil {
		return nil
	}

	// Reset the relationship
	o.R.CreatorResidents = nil

	related, err := o.CreatorResidents(mods...).All(ctx, exec)
	if err != nil {
		return err
	}

	for _, rel := range related {
		rel.R.CreatorUser = o
	}

	o.R.CreatorResidents = related
	return nil
}

// LoadCreatorResidents loads the user's CreatorResidents into the .R struct
func (os UserSlice) LoadCreatorResidents(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
	if len(os) == 0 {
		return nil
	}

	residents, err := os.CreatorResidents(mods...).All(ctx, exec)
	if err != nil {
		return err
	}

	for _, o := range os {
		if o == nil {
			continue
		}

		o.R.CreatorResidents = nil
	}

	for _, o := range os {
		if o == nil {
			continue
		}

		for _, rel := range residents {

			if !(o.ID == rel.Creator) {
				continue
			}

			rel.R.CreatorUser = o

			o.R.CreatorResidents = append(o.R.CreatorResidents, rel)
		}
	}

	return nil
}

// LoadCreatorReviewTasks loads the user's CreatorReviewTasks into the .R struct
func (o *User) LoadCreatorReviewTasks(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
	if o == nil {
		return nil
	}

	// Reset the relationship
	o.R.CreatorReviewTasks = nil

	related, err := o.CreatorReviewTasks(mods...).All(ctx, exec)
	if err != nil {
		return err
	}

	for _, rel := range related {
		rel.R.CreatorUser = o
	}

	o.R.CreatorReviewTasks = related
	return nil
}

// LoadCreatorReviewTasks loads the user's CreatorReviewTasks into the .R struct
func (os UserSlice) LoadCreatorReviewTasks(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
	if len(os) == 0 {
		return nil
	}

	reviewTasks, err := os.CreatorReviewTasks(mods...).All(ctx, exec)
	if err != nil {
		return err
	}

	for _, o := range os {
		if o == nil {
			continue
		}

		o.R.CreatorReviewTasks = nil
	}

	for _, o := range os {
		if o == nil {
			continue
		}

		for _, rel := range reviewTasks {

			if !rel.CreatorID.IsValue() {
				continue
			}
			if !(rel.CreatorID.IsValue() && o.ID == rel.CreatorID.MustGet()) {
				continue
			}

			rel.R.CreatorUser = o

			o.R.CreatorReviewTasks = append(o.R.CreatorReviewTasks, rel)
		}
	}

	return nil
}

// LoadReviewerReviewTasks loads the user's ReviewerReviewTasks into the .R struct
func (o *User) LoadReviewerReviewTasks(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
	if o == nil {
		return nil
	}

	// Reset the relationship
	o.R.ReviewerReviewTasks = nil

	related, err := o.ReviewerReviewTasks(mods...).All(ctx, exec)
	if err != nil {
		return err
	}

	for _, rel := range related {
		rel.R.ReviewerUser = o
	}

	o.R.ReviewerReviewTasks = related
	return nil
}

// LoadReviewerReviewTasks loads the user's ReviewerReviewTasks into the .R struct
func (os UserSlice) LoadReviewerReviewTasks(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
	if len(os) == 0 {
		return nil
	}

	reviewTasks, err := os.ReviewerReviewTasks(mods...).All(ctx, exec)
	if err != nil {
		return err
	}

	for _, o := range os {
		if o == nil {
			continue
		}

		o.R.ReviewerReviewTasks = nil
	}

	for _, o := range os {
		if o == nil {
			continue
		}

		for _, rel := range reviewTasks {

			if !rel.ReviewerID.IsValue() {
				continue
			}
			if !(rel.ReviewerID.IsValue() && o.ID == rel.ReviewerID.MustGet()) {
				continue
			}

			rel.R.ReviewerUser = o

			o.R.ReviewerReviewTasks = append(o.R.ReviewerReviewTasks, rel)
		}
	}

	return nil
}

// LoadAddressorSignals loads the user's AddressorSignals into the .R struct
func (o *User) LoadAddressorSignals(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
	if o == nil {
		return nil
	}

	// Reset the relationship
	o.R.AddressorSignals = nil

	related, err := o.AddressorSignals(mods...).All(ctx, exec)
	if err != nil {
		return err
	}

	for _, rel := range related {
		rel.R.AddressorUser = o
	}

	o.R.AddressorSignals = related
	return nil
}

// LoadAddressorSignals loads the user's AddressorSignals into the .R struct
func (os UserSlice) LoadAddressorSignals(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
	if len(os) == 0 {
		return nil
	}

	signals, err := os.AddressorSignals(mods...).All(ctx, exec)
	if err != nil {
		return err
	}

	for _, o := range os {
		if o == nil {
			continue
		}

		o.R.AddressorSignals = nil
	}

	for _, o := range os {
		if o == nil {
			continue
		}

		for _, rel := range signals {

			if !rel.Addressor.IsValue() {
				continue
			}
			if !(rel.Addressor.IsValue() && o.ID == rel.Addressor.MustGet()) {
				continue
			}

			rel.R.AddressorUser = o

			o.R.AddressorSignals = append(o.R.AddressorSignals, rel)
		}
	}

	return nil
}

// LoadCreatorSignals loads the user's CreatorSignals into the .R struct
func (o *User) LoadCreatorSignals(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
	if o == nil {
		return nil
	}

	// Reset the relationship
	o.R.CreatorSignals = nil

	related, err := o.CreatorSignals(mods...).All(ctx, exec)
	if err != nil {
		return err
	}

	for _, rel := range related {
		rel.R.CreatorUser = o
	}

	o.R.CreatorSignals = related
	return nil
}

// LoadCreatorSignals loads the user's CreatorSignals into the .R struct
func (os UserSlice) LoadCreatorSignals(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
	if len(os) == 0 {
		return nil
	}

	signals, err := os.CreatorSignals(mods...).All(ctx, exec)
	if err != nil {
		return err
	}

	for _, o := range os {
		if o == nil {
			continue
		}

		o.R.CreatorSignals = nil
	}

	for _, o := range os {
		if o == nil {
			continue
		}

		for _, rel := range signals {

			if !(o.ID == rel.Creator) {
				continue
			}

			rel.R.CreatorUser = o

			o.R.CreatorSignals = append(o.R.CreatorSignals, rel)
		}
	}

	return nil
}

// LoadCreatorSites loads the user's CreatorSites into the .R struct
func (o *User) LoadCreatorSites(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
	if o == nil {
		return nil
	}

	// Reset the relationship
	o.R.CreatorSites = nil

	related, err := o.CreatorSites(mods...).All(ctx, exec)
	if err != nil {
		return err
	}

	for _, rel := range related {
		rel.R.CreatorUser = o
	}

	o.R.CreatorSites = related
	return nil
}

// LoadCreatorSites loads the user's CreatorSites into the .R struct
func (os UserSlice) LoadCreatorSites(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
	if len(os) == 0 {
		return nil
	}

	sites, err := os.CreatorSites(mods...).All(ctx, exec)
	if err != nil {
		return err
	}

	for _, o := range os {
		if o == nil {
			continue
		}

		o.R.CreatorSites = nil
	}

	for _, o := range os {
		if o == nil {
			continue
		}

		for _, rel := range sites {

			if !(o.ID == rel.CreatorID) {
				continue
			}

			rel.R.CreatorUser = o

			o.R.CreatorSites = append(o.R.CreatorSites, rel)
		}
	}

	return nil
}

// LoadOrganization loads the user's Organization into the .R struct
func (o *User) LoadOrganization(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
	if o == nil {
		return nil
	}

	// Reset the relationship
	o.R.Organization = nil

	related, err := o.Organization(mods...).One(ctx, exec)
	if err != nil {
		return err
	}

	related.R.User = UserSlice{o}

	o.R.Organization = related
	return nil
}

// LoadOrganization loads the user's Organization into the .R struct
func (os UserSlice) LoadOrganization(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
	if len(os) == 0 {
		return nil
	}

	organizations, err := os.Organization(mods...).All(ctx, exec)
	if err != nil {
		return err
	}

	for _, o := range os {
		if o == nil {
			continue
		}

		for _, rel := range organizations {

			if !(o.OrganizationID == rel.ID) {
				continue
			}

			rel.R.User = append(rel.R.User, o)

			o.R.Organization = rel
			break
		}
	}

	return nil
}
