nidus-sync/db/models/note_audio.bob.go
Eli Ribble 2538638c9d
Create generic backend process, fix background interdependencies
This refactor was born out of the inter-dependency cycles developing
between the "background" module and just about every other module which
was caused by the background module becoming a dependency of every
module that needed to background work and the fact that the background
module was also supposedly responsible for the logic for processing
those tasks.

Instead the "background" module is now very, very shallow and relies
entirely on the Postgres NOTIFY logic for triggering jobs. There's a new
table, `job` which holds just a type and single row ID.

All told, this means that jobs can be added to the queue as part of the
API-level or platform-level transaction, ensuring atomicity, and
processing coordination is handled by the platform module, which can
depend on anything.
2026-03-16 19:52:29 +00:00

1492 lines
42 KiB
Go

// 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"
)
// NoteAudio is an object representing the database table.
type NoteAudio struct {
Created time.Time `db:"created" `
CreatorID int32 `db:"creator_id" `
Deleted null.Val[time.Time] `db:"deleted" `
DeletorID null.Val[int32] `db:"deletor_id" `
Duration float32 `db:"duration" `
OrganizationID int32 `db:"organization_id" `
Transcription null.Val[string] `db:"transcription" `
TranscriptionUserEdited bool `db:"transcription_user_edited" `
Version int32 `db:"version,pk" `
UUID uuid.UUID `db:"uuid,pk" `
ID int32 `db:"id,generated" `
R noteAudioR `db:"-" `
}
// NoteAudioSlice is an alias for a slice of pointers to NoteAudio.
// This should almost always be used instead of []*NoteAudio.
type NoteAudioSlice []*NoteAudio
// NoteAudios contains methods to work with the note_audio table
var NoteAudios = psql.NewTablex[*NoteAudio, NoteAudioSlice, *NoteAudioSetter]("", "note_audio", buildNoteAudioColumns("note_audio"))
// NoteAudiosQuery is a query on the note_audio table
type NoteAudiosQuery = *psql.ViewQuery[*NoteAudio, NoteAudioSlice]
// noteAudioR is where relationships are stored.
type noteAudioR struct {
CreatorUser *User // note_audio.note_audio_creator_id_fkey
DeletorUser *User // note_audio.note_audio_deletor_id_fkey
Organization *Organization // note_audio.note_audio_organization_id_fkey
NoteAudioBreadcrumbs NoteAudioBreadcrumbSlice // note_audio_breadcrumb.note_audio_breadcrumb_note_audio_version_note_audio_uuid_fkey
NoteAudioData NoteAudioDatumSlice // note_audio_data.note_audio_data_note_audio_version_note_audio_uuid_fkey
}
func buildNoteAudioColumns(alias string) noteAudioColumns {
return noteAudioColumns{
ColumnsExpr: expr.NewColumnsExpr(
"created", "creator_id", "deleted", "deletor_id", "duration", "organization_id", "transcription", "transcription_user_edited", "version", "uuid", "id",
).WithParent("note_audio"),
tableAlias: alias,
Created: psql.Quote(alias, "created"),
CreatorID: psql.Quote(alias, "creator_id"),
Deleted: psql.Quote(alias, "deleted"),
DeletorID: psql.Quote(alias, "deletor_id"),
Duration: psql.Quote(alias, "duration"),
OrganizationID: psql.Quote(alias, "organization_id"),
Transcription: psql.Quote(alias, "transcription"),
TranscriptionUserEdited: psql.Quote(alias, "transcription_user_edited"),
Version: psql.Quote(alias, "version"),
UUID: psql.Quote(alias, "uuid"),
ID: psql.Quote(alias, "id"),
}
}
type noteAudioColumns struct {
expr.ColumnsExpr
tableAlias string
Created psql.Expression
CreatorID psql.Expression
Deleted psql.Expression
DeletorID psql.Expression
Duration psql.Expression
OrganizationID psql.Expression
Transcription psql.Expression
TranscriptionUserEdited psql.Expression
Version psql.Expression
UUID psql.Expression
ID psql.Expression
}
func (c noteAudioColumns) Alias() string {
return c.tableAlias
}
func (noteAudioColumns) AliasedAs(alias string) noteAudioColumns {
return buildNoteAudioColumns(alias)
}
// NoteAudioSetter is used for insert/upsert/update operations
// All values are optional, and do not have to be set
// Generated columns are not included
type NoteAudioSetter struct {
Created omit.Val[time.Time] `db:"created" `
CreatorID omit.Val[int32] `db:"creator_id" `
Deleted omitnull.Val[time.Time] `db:"deleted" `
DeletorID omitnull.Val[int32] `db:"deletor_id" `
Duration omit.Val[float32] `db:"duration" `
OrganizationID omit.Val[int32] `db:"organization_id" `
Transcription omitnull.Val[string] `db:"transcription" `
TranscriptionUserEdited omit.Val[bool] `db:"transcription_user_edited" `
Version omit.Val[int32] `db:"version,pk" `
UUID omit.Val[uuid.UUID] `db:"uuid,pk" `
}
func (s NoteAudioSetter) SetColumns() []string {
vals := make([]string, 0, 10)
if s.Created.IsValue() {
vals = append(vals, "created")
}
if s.CreatorID.IsValue() {
vals = append(vals, "creator_id")
}
if !s.Deleted.IsUnset() {
vals = append(vals, "deleted")
}
if !s.DeletorID.IsUnset() {
vals = append(vals, "deletor_id")
}
if s.Duration.IsValue() {
vals = append(vals, "duration")
}
if s.OrganizationID.IsValue() {
vals = append(vals, "organization_id")
}
if !s.Transcription.IsUnset() {
vals = append(vals, "transcription")
}
if s.TranscriptionUserEdited.IsValue() {
vals = append(vals, "transcription_user_edited")
}
if s.Version.IsValue() {
vals = append(vals, "version")
}
if s.UUID.IsValue() {
vals = append(vals, "uuid")
}
return vals
}
func (s NoteAudioSetter) Overwrite(t *NoteAudio) {
if s.Created.IsValue() {
t.Created = s.Created.MustGet()
}
if s.CreatorID.IsValue() {
t.CreatorID = s.CreatorID.MustGet()
}
if !s.Deleted.IsUnset() {
t.Deleted = s.Deleted.MustGetNull()
}
if !s.DeletorID.IsUnset() {
t.DeletorID = s.DeletorID.MustGetNull()
}
if s.Duration.IsValue() {
t.Duration = s.Duration.MustGet()
}
if s.OrganizationID.IsValue() {
t.OrganizationID = s.OrganizationID.MustGet()
}
if !s.Transcription.IsUnset() {
t.Transcription = s.Transcription.MustGetNull()
}
if s.TranscriptionUserEdited.IsValue() {
t.TranscriptionUserEdited = s.TranscriptionUserEdited.MustGet()
}
if s.Version.IsValue() {
t.Version = s.Version.MustGet()
}
if s.UUID.IsValue() {
t.UUID = s.UUID.MustGet()
}
}
func (s *NoteAudioSetter) Apply(q *dialect.InsertQuery) {
q.AppendHooks(func(ctx context.Context, exec bob.Executor) (context.Context, error) {
return NoteAudios.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, 10)
if s.Created.IsValue() {
vals[0] = psql.Arg(s.Created.MustGet())
} else {
vals[0] = psql.Raw("DEFAULT")
}
if s.CreatorID.IsValue() {
vals[1] = psql.Arg(s.CreatorID.MustGet())
} else {
vals[1] = psql.Raw("DEFAULT")
}
if !s.Deleted.IsUnset() {
vals[2] = psql.Arg(s.Deleted.MustGetNull())
} else {
vals[2] = psql.Raw("DEFAULT")
}
if !s.DeletorID.IsUnset() {
vals[3] = psql.Arg(s.DeletorID.MustGetNull())
} else {
vals[3] = psql.Raw("DEFAULT")
}
if s.Duration.IsValue() {
vals[4] = psql.Arg(s.Duration.MustGet())
} else {
vals[4] = psql.Raw("DEFAULT")
}
if s.OrganizationID.IsValue() {
vals[5] = psql.Arg(s.OrganizationID.MustGet())
} else {
vals[5] = psql.Raw("DEFAULT")
}
if !s.Transcription.IsUnset() {
vals[6] = psql.Arg(s.Transcription.MustGetNull())
} else {
vals[6] = psql.Raw("DEFAULT")
}
if s.TranscriptionUserEdited.IsValue() {
vals[7] = psql.Arg(s.TranscriptionUserEdited.MustGet())
} else {
vals[7] = psql.Raw("DEFAULT")
}
if s.Version.IsValue() {
vals[8] = psql.Arg(s.Version.MustGet())
} else {
vals[8] = psql.Raw("DEFAULT")
}
if s.UUID.IsValue() {
vals[9] = psql.Arg(s.UUID.MustGet())
} else {
vals[9] = psql.Raw("DEFAULT")
}
return bob.ExpressSlice(ctx, w, d, start, vals, "", ", ", "")
}))
}
func (s NoteAudioSetter) UpdateMod() bob.Mod[*dialect.UpdateQuery] {
return um.Set(s.Expressions()...)
}
func (s NoteAudioSetter) Expressions(prefix ...string) []bob.Expression {
exprs := make([]bob.Expression, 0, 10)
if s.Created.IsValue() {
exprs = append(exprs, expr.Join{Sep: " = ", Exprs: []bob.Expression{
psql.Quote(append(prefix, "created")...),
psql.Arg(s.Created),
}})
}
if s.CreatorID.IsValue() {
exprs = append(exprs, expr.Join{Sep: " = ", Exprs: []bob.Expression{
psql.Quote(append(prefix, "creator_id")...),
psql.Arg(s.CreatorID),
}})
}
if !s.Deleted.IsUnset() {
exprs = append(exprs, expr.Join{Sep: " = ", Exprs: []bob.Expression{
psql.Quote(append(prefix, "deleted")...),
psql.Arg(s.Deleted),
}})
}
if !s.DeletorID.IsUnset() {
exprs = append(exprs, expr.Join{Sep: " = ", Exprs: []bob.Expression{
psql.Quote(append(prefix, "deletor_id")...),
psql.Arg(s.DeletorID),
}})
}
if s.Duration.IsValue() {
exprs = append(exprs, expr.Join{Sep: " = ", Exprs: []bob.Expression{
psql.Quote(append(prefix, "duration")...),
psql.Arg(s.Duration),
}})
}
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.Transcription.IsUnset() {
exprs = append(exprs, expr.Join{Sep: " = ", Exprs: []bob.Expression{
psql.Quote(append(prefix, "transcription")...),
psql.Arg(s.Transcription),
}})
}
if s.TranscriptionUserEdited.IsValue() {
exprs = append(exprs, expr.Join{Sep: " = ", Exprs: []bob.Expression{
psql.Quote(append(prefix, "transcription_user_edited")...),
psql.Arg(s.TranscriptionUserEdited),
}})
}
if s.Version.IsValue() {
exprs = append(exprs, expr.Join{Sep: " = ", Exprs: []bob.Expression{
psql.Quote(append(prefix, "version")...),
psql.Arg(s.Version),
}})
}
if s.UUID.IsValue() {
exprs = append(exprs, expr.Join{Sep: " = ", Exprs: []bob.Expression{
psql.Quote(append(prefix, "uuid")...),
psql.Arg(s.UUID),
}})
}
return exprs
}
// FindNoteAudio retrieves a single record by primary key
// If cols is empty Find will return all columns.
func FindNoteAudio(ctx context.Context, exec bob.Executor, VersionPK int32, UUIDPK uuid.UUID, cols ...string) (*NoteAudio, error) {
if len(cols) == 0 {
return NoteAudios.Query(
sm.Where(NoteAudios.Columns.Version.EQ(psql.Arg(VersionPK))),
sm.Where(NoteAudios.Columns.UUID.EQ(psql.Arg(UUIDPK))),
).One(ctx, exec)
}
return NoteAudios.Query(
sm.Where(NoteAudios.Columns.Version.EQ(psql.Arg(VersionPK))),
sm.Where(NoteAudios.Columns.UUID.EQ(psql.Arg(UUIDPK))),
sm.Columns(NoteAudios.Columns.Only(cols...)),
).One(ctx, exec)
}
// NoteAudioExists checks the presence of a single record by primary key
func NoteAudioExists(ctx context.Context, exec bob.Executor, VersionPK int32, UUIDPK uuid.UUID) (bool, error) {
return NoteAudios.Query(
sm.Where(NoteAudios.Columns.Version.EQ(psql.Arg(VersionPK))),
sm.Where(NoteAudios.Columns.UUID.EQ(psql.Arg(UUIDPK))),
).Exists(ctx, exec)
}
// AfterQueryHook is called after NoteAudio is retrieved from the database
func (o *NoteAudio) AfterQueryHook(ctx context.Context, exec bob.Executor, queryType bob.QueryType) error {
var err error
switch queryType {
case bob.QueryTypeSelect:
ctx, err = NoteAudios.AfterSelectHooks.RunHooks(ctx, exec, NoteAudioSlice{o})
case bob.QueryTypeInsert:
ctx, err = NoteAudios.AfterInsertHooks.RunHooks(ctx, exec, NoteAudioSlice{o})
case bob.QueryTypeUpdate:
ctx, err = NoteAudios.AfterUpdateHooks.RunHooks(ctx, exec, NoteAudioSlice{o})
case bob.QueryTypeDelete:
ctx, err = NoteAudios.AfterDeleteHooks.RunHooks(ctx, exec, NoteAudioSlice{o})
}
return err
}
// primaryKeyVals returns the primary key values of the NoteAudio
func (o *NoteAudio) primaryKeyVals() bob.Expression {
return psql.ArgGroup(
o.Version,
o.UUID,
)
}
func (o *NoteAudio) pkEQ() dialect.Expression {
return psql.Group(psql.Quote("note_audio", "version"), psql.Quote("note_audio", "uuid")).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 NoteAudio
func (o *NoteAudio) Update(ctx context.Context, exec bob.Executor, s *NoteAudioSetter) error {
v, err := NoteAudios.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 NoteAudio record with an executor
func (o *NoteAudio) Delete(ctx context.Context, exec bob.Executor) error {
_, err := NoteAudios.Delete(dm.Where(o.pkEQ())).Exec(ctx, exec)
return err
}
// Reload refreshes the NoteAudio using the executor
func (o *NoteAudio) Reload(ctx context.Context, exec bob.Executor) error {
o2, err := NoteAudios.Query(
sm.Where(NoteAudios.Columns.Version.EQ(psql.Arg(o.Version))),
sm.Where(NoteAudios.Columns.UUID.EQ(psql.Arg(o.UUID))),
).One(ctx, exec)
if err != nil {
return err
}
o2.R = o.R
*o = *o2
return nil
}
// AfterQueryHook is called after NoteAudioSlice is retrieved from the database
func (o NoteAudioSlice) AfterQueryHook(ctx context.Context, exec bob.Executor, queryType bob.QueryType) error {
var err error
switch queryType {
case bob.QueryTypeSelect:
ctx, err = NoteAudios.AfterSelectHooks.RunHooks(ctx, exec, o)
case bob.QueryTypeInsert:
ctx, err = NoteAudios.AfterInsertHooks.RunHooks(ctx, exec, o)
case bob.QueryTypeUpdate:
ctx, err = NoteAudios.AfterUpdateHooks.RunHooks(ctx, exec, o)
case bob.QueryTypeDelete:
ctx, err = NoteAudios.AfterDeleteHooks.RunHooks(ctx, exec, o)
}
return err
}
func (o NoteAudioSlice) pkIN() dialect.Expression {
if len(o) == 0 {
return psql.Raw("NULL")
}
return psql.Group(psql.Quote("note_audio", "version"), psql.Quote("note_audio", "uuid")).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 NoteAudioSlice) copyMatchingRows(from ...*NoteAudio) {
for i, old := range o {
for _, new := range from {
if new.Version != old.Version {
continue
}
if new.UUID != old.UUID {
continue
}
new.R = old.R
o[i] = new
break
}
}
}
// UpdateMod modifies an update query with "WHERE primary_key IN (o...)"
func (o NoteAudioSlice) 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 NoteAudios.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 *NoteAudio:
o.copyMatchingRows(retrieved)
case []*NoteAudio:
o.copyMatchingRows(retrieved...)
case NoteAudioSlice:
o.copyMatchingRows(retrieved...)
default:
// If the retrieved value is not a NoteAudio or a slice of NoteAudio
// then run the AfterUpdateHooks on the slice
_, err = NoteAudios.AfterUpdateHooks.RunHooks(ctx, exec, o)
}
return err
}))
q.AppendWhere(o.pkIN())
})
}
// DeleteMod modifies an delete query with "WHERE primary_key IN (o...)"
func (o NoteAudioSlice) 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 NoteAudios.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 *NoteAudio:
o.copyMatchingRows(retrieved)
case []*NoteAudio:
o.copyMatchingRows(retrieved...)
case NoteAudioSlice:
o.copyMatchingRows(retrieved...)
default:
// If the retrieved value is not a NoteAudio or a slice of NoteAudio
// then run the AfterDeleteHooks on the slice
_, err = NoteAudios.AfterDeleteHooks.RunHooks(ctx, exec, o)
}
return err
}))
q.AppendWhere(o.pkIN())
})
}
func (o NoteAudioSlice) UpdateAll(ctx context.Context, exec bob.Executor, vals NoteAudioSetter) error {
if len(o) == 0 {
return nil
}
_, err := NoteAudios.Update(vals.UpdateMod(), o.UpdateMod()).All(ctx, exec)
return err
}
func (o NoteAudioSlice) DeleteAll(ctx context.Context, exec bob.Executor) error {
if len(o) == 0 {
return nil
}
_, err := NoteAudios.Delete(o.DeleteMod()).Exec(ctx, exec)
return err
}
func (o NoteAudioSlice) ReloadAll(ctx context.Context, exec bob.Executor) error {
if len(o) == 0 {
return nil
}
o2, err := NoteAudios.Query(sm.Where(o.pkIN())).All(ctx, exec)
if err != nil {
return err
}
o.copyMatchingRows(o2...)
return nil
}
// CreatorUser starts a query for related objects on user_
func (o *NoteAudio) CreatorUser(mods ...bob.Mod[*dialect.SelectQuery]) UsersQuery {
return Users.Query(append(mods,
sm.Where(Users.Columns.ID.EQ(psql.Arg(o.CreatorID))),
)...)
}
func (os NoteAudioSlice) CreatorUser(mods ...bob.Mod[*dialect.SelectQuery]) UsersQuery {
pkCreatorID := make(pgtypes.Array[int32], 0, len(os))
for _, o := range os {
if o == nil {
continue
}
pkCreatorID = append(pkCreatorID, o.CreatorID)
}
PKArgExpr := psql.Select(sm.Columns(
psql.F("unnest", psql.Cast(psql.Arg(pkCreatorID), "integer[]")),
))
return Users.Query(append(mods,
sm.Where(psql.Group(Users.Columns.ID).OP("IN", PKArgExpr)),
)...)
}
// DeletorUser starts a query for related objects on user_
func (o *NoteAudio) DeletorUser(mods ...bob.Mod[*dialect.SelectQuery]) UsersQuery {
return Users.Query(append(mods,
sm.Where(Users.Columns.ID.EQ(psql.Arg(o.DeletorID))),
)...)
}
func (os NoteAudioSlice) DeletorUser(mods ...bob.Mod[*dialect.SelectQuery]) UsersQuery {
pkDeletorID := make(pgtypes.Array[null.Val[int32]], 0, len(os))
for _, o := range os {
if o == nil {
continue
}
pkDeletorID = append(pkDeletorID, o.DeletorID)
}
PKArgExpr := psql.Select(sm.Columns(
psql.F("unnest", psql.Cast(psql.Arg(pkDeletorID), "integer[]")),
))
return Users.Query(append(mods,
sm.Where(psql.Group(Users.Columns.ID).OP("IN", PKArgExpr)),
)...)
}
// Organization starts a query for related objects on organization
func (o *NoteAudio) Organization(mods ...bob.Mod[*dialect.SelectQuery]) OrganizationsQuery {
return Organizations.Query(append(mods,
sm.Where(Organizations.Columns.ID.EQ(psql.Arg(o.OrganizationID))),
)...)
}
func (os NoteAudioSlice) 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)),
)...)
}
// NoteAudioBreadcrumbs starts a query for related objects on note_audio_breadcrumb
func (o *NoteAudio) NoteAudioBreadcrumbs(mods ...bob.Mod[*dialect.SelectQuery]) NoteAudioBreadcrumbsQuery {
return NoteAudioBreadcrumbs.Query(append(mods,
sm.Where(NoteAudioBreadcrumbs.Columns.NoteAudioVersion.EQ(psql.Arg(o.Version))), sm.Where(NoteAudioBreadcrumbs.Columns.NoteAudioUUID.EQ(psql.Arg(o.UUID))),
)...)
}
func (os NoteAudioSlice) NoteAudioBreadcrumbs(mods ...bob.Mod[*dialect.SelectQuery]) NoteAudioBreadcrumbsQuery {
pkVersion := make(pgtypes.Array[int32], 0, len(os))
pkUUID := make(pgtypes.Array[uuid.UUID], 0, len(os))
for _, o := range os {
if o == nil {
continue
}
pkVersion = append(pkVersion, o.Version)
pkUUID = append(pkUUID, o.UUID)
}
PKArgExpr := psql.Select(sm.Columns(
psql.F("unnest", psql.Cast(psql.Arg(pkVersion), "integer[]")),
psql.F("unnest", psql.Cast(psql.Arg(pkUUID), "uuid[]")),
))
return NoteAudioBreadcrumbs.Query(append(mods,
sm.Where(psql.Group(NoteAudioBreadcrumbs.Columns.NoteAudioVersion, NoteAudioBreadcrumbs.Columns.NoteAudioUUID).OP("IN", PKArgExpr)),
)...)
}
// NoteAudioData starts a query for related objects on note_audio_data
func (o *NoteAudio) NoteAudioData(mods ...bob.Mod[*dialect.SelectQuery]) NoteAudioDataQuery {
return NoteAudioData.Query(append(mods,
sm.Where(NoteAudioData.Columns.NoteAudioVersion.EQ(psql.Arg(o.Version))), sm.Where(NoteAudioData.Columns.NoteAudioUUID.EQ(psql.Arg(o.UUID))),
)...)
}
func (os NoteAudioSlice) NoteAudioData(mods ...bob.Mod[*dialect.SelectQuery]) NoteAudioDataQuery {
pkVersion := make(pgtypes.Array[int32], 0, len(os))
pkUUID := make(pgtypes.Array[uuid.UUID], 0, len(os))
for _, o := range os {
if o == nil {
continue
}
pkVersion = append(pkVersion, o.Version)
pkUUID = append(pkUUID, o.UUID)
}
PKArgExpr := psql.Select(sm.Columns(
psql.F("unnest", psql.Cast(psql.Arg(pkVersion), "integer[]")),
psql.F("unnest", psql.Cast(psql.Arg(pkUUID), "uuid[]")),
))
return NoteAudioData.Query(append(mods,
sm.Where(psql.Group(NoteAudioData.Columns.NoteAudioVersion, NoteAudioData.Columns.NoteAudioUUID).OP("IN", PKArgExpr)),
)...)
}
func attachNoteAudioCreatorUser0(ctx context.Context, exec bob.Executor, count int, noteAudio0 *NoteAudio, user1 *User) (*NoteAudio, error) {
setter := &NoteAudioSetter{
CreatorID: omit.From(user1.ID),
}
err := noteAudio0.Update(ctx, exec, setter)
if err != nil {
return nil, fmt.Errorf("attachNoteAudioCreatorUser0: %w", err)
}
return noteAudio0, nil
}
func (noteAudio0 *NoteAudio) InsertCreatorUser(ctx context.Context, exec bob.Executor, related *UserSetter) error {
var err error
user1, err := Users.Insert(related).One(ctx, exec)
if err != nil {
return fmt.Errorf("inserting related objects: %w", err)
}
_, err = attachNoteAudioCreatorUser0(ctx, exec, 1, noteAudio0, user1)
if err != nil {
return err
}
noteAudio0.R.CreatorUser = user1
user1.R.CreatorNoteAudios = append(user1.R.CreatorNoteAudios, noteAudio0)
return nil
}
func (noteAudio0 *NoteAudio) AttachCreatorUser(ctx context.Context, exec bob.Executor, user1 *User) error {
var err error
_, err = attachNoteAudioCreatorUser0(ctx, exec, 1, noteAudio0, user1)
if err != nil {
return err
}
noteAudio0.R.CreatorUser = user1
user1.R.CreatorNoteAudios = append(user1.R.CreatorNoteAudios, noteAudio0)
return nil
}
func attachNoteAudioDeletorUser0(ctx context.Context, exec bob.Executor, count int, noteAudio0 *NoteAudio, user1 *User) (*NoteAudio, error) {
setter := &NoteAudioSetter{
DeletorID: omitnull.From(user1.ID),
}
err := noteAudio0.Update(ctx, exec, setter)
if err != nil {
return nil, fmt.Errorf("attachNoteAudioDeletorUser0: %w", err)
}
return noteAudio0, nil
}
func (noteAudio0 *NoteAudio) InsertDeletorUser(ctx context.Context, exec bob.Executor, related *UserSetter) error {
var err error
user1, err := Users.Insert(related).One(ctx, exec)
if err != nil {
return fmt.Errorf("inserting related objects: %w", err)
}
_, err = attachNoteAudioDeletorUser0(ctx, exec, 1, noteAudio0, user1)
if err != nil {
return err
}
noteAudio0.R.DeletorUser = user1
user1.R.DeletorNoteAudios = append(user1.R.DeletorNoteAudios, noteAudio0)
return nil
}
func (noteAudio0 *NoteAudio) AttachDeletorUser(ctx context.Context, exec bob.Executor, user1 *User) error {
var err error
_, err = attachNoteAudioDeletorUser0(ctx, exec, 1, noteAudio0, user1)
if err != nil {
return err
}
noteAudio0.R.DeletorUser = user1
user1.R.DeletorNoteAudios = append(user1.R.DeletorNoteAudios, noteAudio0)
return nil
}
func attachNoteAudioOrganization0(ctx context.Context, exec bob.Executor, count int, noteAudio0 *NoteAudio, organization1 *Organization) (*NoteAudio, error) {
setter := &NoteAudioSetter{
OrganizationID: omit.From(organization1.ID),
}
err := noteAudio0.Update(ctx, exec, setter)
if err != nil {
return nil, fmt.Errorf("attachNoteAudioOrganization0: %w", err)
}
return noteAudio0, nil
}
func (noteAudio0 *NoteAudio) 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 = attachNoteAudioOrganization0(ctx, exec, 1, noteAudio0, organization1)
if err != nil {
return err
}
noteAudio0.R.Organization = organization1
organization1.R.NoteAudios = append(organization1.R.NoteAudios, noteAudio0)
return nil
}
func (noteAudio0 *NoteAudio) AttachOrganization(ctx context.Context, exec bob.Executor, organization1 *Organization) error {
var err error
_, err = attachNoteAudioOrganization0(ctx, exec, 1, noteAudio0, organization1)
if err != nil {
return err
}
noteAudio0.R.Organization = organization1
organization1.R.NoteAudios = append(organization1.R.NoteAudios, noteAudio0)
return nil
}
func insertNoteAudioNoteAudioBreadcrumbs0(ctx context.Context, exec bob.Executor, noteAudioBreadcrumbs1 []*NoteAudioBreadcrumbSetter, noteAudio0 *NoteAudio) (NoteAudioBreadcrumbSlice, error) {
for i := range noteAudioBreadcrumbs1 {
noteAudioBreadcrumbs1[i].NoteAudioVersion = omit.From(noteAudio0.Version)
noteAudioBreadcrumbs1[i].NoteAudioUUID = omit.From(noteAudio0.UUID)
}
ret, err := NoteAudioBreadcrumbs.Insert(bob.ToMods(noteAudioBreadcrumbs1...)).All(ctx, exec)
if err != nil {
return ret, fmt.Errorf("insertNoteAudioNoteAudioBreadcrumbs0: %w", err)
}
return ret, nil
}
func attachNoteAudioNoteAudioBreadcrumbs0(ctx context.Context, exec bob.Executor, count int, noteAudioBreadcrumbs1 NoteAudioBreadcrumbSlice, noteAudio0 *NoteAudio) (NoteAudioBreadcrumbSlice, error) {
setter := &NoteAudioBreadcrumbSetter{
NoteAudioVersion: omit.From(noteAudio0.Version),
NoteAudioUUID: omit.From(noteAudio0.UUID),
}
err := noteAudioBreadcrumbs1.UpdateAll(ctx, exec, *setter)
if err != nil {
return nil, fmt.Errorf("attachNoteAudioNoteAudioBreadcrumbs0: %w", err)
}
return noteAudioBreadcrumbs1, nil
}
func (noteAudio0 *NoteAudio) InsertNoteAudioBreadcrumbs(ctx context.Context, exec bob.Executor, related ...*NoteAudioBreadcrumbSetter) error {
if len(related) == 0 {
return nil
}
var err error
noteAudioBreadcrumbs1, err := insertNoteAudioNoteAudioBreadcrumbs0(ctx, exec, related, noteAudio0)
if err != nil {
return err
}
noteAudio0.R.NoteAudioBreadcrumbs = append(noteAudio0.R.NoteAudioBreadcrumbs, noteAudioBreadcrumbs1...)
for _, rel := range noteAudioBreadcrumbs1 {
rel.R.NoteAudio = noteAudio0
}
return nil
}
func (noteAudio0 *NoteAudio) AttachNoteAudioBreadcrumbs(ctx context.Context, exec bob.Executor, related ...*NoteAudioBreadcrumb) error {
if len(related) == 0 {
return nil
}
var err error
noteAudioBreadcrumbs1 := NoteAudioBreadcrumbSlice(related)
_, err = attachNoteAudioNoteAudioBreadcrumbs0(ctx, exec, len(related), noteAudioBreadcrumbs1, noteAudio0)
if err != nil {
return err
}
noteAudio0.R.NoteAudioBreadcrumbs = append(noteAudio0.R.NoteAudioBreadcrumbs, noteAudioBreadcrumbs1...)
for _, rel := range related {
rel.R.NoteAudio = noteAudio0
}
return nil
}
func insertNoteAudioNoteAudioData0(ctx context.Context, exec bob.Executor, noteAudioData1 []*NoteAudioDatumSetter, noteAudio0 *NoteAudio) (NoteAudioDatumSlice, error) {
for i := range noteAudioData1 {
noteAudioData1[i].NoteAudioVersion = omit.From(noteAudio0.Version)
noteAudioData1[i].NoteAudioUUID = omit.From(noteAudio0.UUID)
}
ret, err := NoteAudioData.Insert(bob.ToMods(noteAudioData1...)).All(ctx, exec)
if err != nil {
return ret, fmt.Errorf("insertNoteAudioNoteAudioData0: %w", err)
}
return ret, nil
}
func attachNoteAudioNoteAudioData0(ctx context.Context, exec bob.Executor, count int, noteAudioData1 NoteAudioDatumSlice, noteAudio0 *NoteAudio) (NoteAudioDatumSlice, error) {
setter := &NoteAudioDatumSetter{
NoteAudioVersion: omit.From(noteAudio0.Version),
NoteAudioUUID: omit.From(noteAudio0.UUID),
}
err := noteAudioData1.UpdateAll(ctx, exec, *setter)
if err != nil {
return nil, fmt.Errorf("attachNoteAudioNoteAudioData0: %w", err)
}
return noteAudioData1, nil
}
func (noteAudio0 *NoteAudio) InsertNoteAudioData(ctx context.Context, exec bob.Executor, related ...*NoteAudioDatumSetter) error {
if len(related) == 0 {
return nil
}
var err error
noteAudioData1, err := insertNoteAudioNoteAudioData0(ctx, exec, related, noteAudio0)
if err != nil {
return err
}
noteAudio0.R.NoteAudioData = append(noteAudio0.R.NoteAudioData, noteAudioData1...)
for _, rel := range noteAudioData1 {
rel.R.NoteAudio = noteAudio0
}
return nil
}
func (noteAudio0 *NoteAudio) AttachNoteAudioData(ctx context.Context, exec bob.Executor, related ...*NoteAudioDatum) error {
if len(related) == 0 {
return nil
}
var err error
noteAudioData1 := NoteAudioDatumSlice(related)
_, err = attachNoteAudioNoteAudioData0(ctx, exec, len(related), noteAudioData1, noteAudio0)
if err != nil {
return err
}
noteAudio0.R.NoteAudioData = append(noteAudio0.R.NoteAudioData, noteAudioData1...)
for _, rel := range related {
rel.R.NoteAudio = noteAudio0
}
return nil
}
type noteAudioWhere[Q psql.Filterable] struct {
Created psql.WhereMod[Q, time.Time]
CreatorID psql.WhereMod[Q, int32]
Deleted psql.WhereNullMod[Q, time.Time]
DeletorID psql.WhereNullMod[Q, int32]
Duration psql.WhereMod[Q, float32]
OrganizationID psql.WhereMod[Q, int32]
Transcription psql.WhereNullMod[Q, string]
TranscriptionUserEdited psql.WhereMod[Q, bool]
Version psql.WhereMod[Q, int32]
UUID psql.WhereMod[Q, uuid.UUID]
ID psql.WhereMod[Q, int32]
}
func (noteAudioWhere[Q]) AliasedAs(alias string) noteAudioWhere[Q] {
return buildNoteAudioWhere[Q](buildNoteAudioColumns(alias))
}
func buildNoteAudioWhere[Q psql.Filterable](cols noteAudioColumns) noteAudioWhere[Q] {
return noteAudioWhere[Q]{
Created: psql.Where[Q, time.Time](cols.Created),
CreatorID: psql.Where[Q, int32](cols.CreatorID),
Deleted: psql.WhereNull[Q, time.Time](cols.Deleted),
DeletorID: psql.WhereNull[Q, int32](cols.DeletorID),
Duration: psql.Where[Q, float32](cols.Duration),
OrganizationID: psql.Where[Q, int32](cols.OrganizationID),
Transcription: psql.WhereNull[Q, string](cols.Transcription),
TranscriptionUserEdited: psql.Where[Q, bool](cols.TranscriptionUserEdited),
Version: psql.Where[Q, int32](cols.Version),
UUID: psql.Where[Q, uuid.UUID](cols.UUID),
ID: psql.Where[Q, int32](cols.ID),
}
}
func (o *NoteAudio) Preload(name string, retrieved any) error {
if o == nil {
return nil
}
switch name {
case "CreatorUser":
rel, ok := retrieved.(*User)
if !ok {
return fmt.Errorf("noteAudio cannot load %T as %q", retrieved, name)
}
o.R.CreatorUser = rel
if rel != nil {
rel.R.CreatorNoteAudios = NoteAudioSlice{o}
}
return nil
case "DeletorUser":
rel, ok := retrieved.(*User)
if !ok {
return fmt.Errorf("noteAudio cannot load %T as %q", retrieved, name)
}
o.R.DeletorUser = rel
if rel != nil {
rel.R.DeletorNoteAudios = NoteAudioSlice{o}
}
return nil
case "Organization":
rel, ok := retrieved.(*Organization)
if !ok {
return fmt.Errorf("noteAudio cannot load %T as %q", retrieved, name)
}
o.R.Organization = rel
if rel != nil {
rel.R.NoteAudios = NoteAudioSlice{o}
}
return nil
case "NoteAudioBreadcrumbs":
rels, ok := retrieved.(NoteAudioBreadcrumbSlice)
if !ok {
return fmt.Errorf("noteAudio cannot load %T as %q", retrieved, name)
}
o.R.NoteAudioBreadcrumbs = rels
for _, rel := range rels {
if rel != nil {
rel.R.NoteAudio = o
}
}
return nil
case "NoteAudioData":
rels, ok := retrieved.(NoteAudioDatumSlice)
if !ok {
return fmt.Errorf("noteAudio cannot load %T as %q", retrieved, name)
}
o.R.NoteAudioData = rels
for _, rel := range rels {
if rel != nil {
rel.R.NoteAudio = o
}
}
return nil
default:
return fmt.Errorf("noteAudio has no relationship %q", name)
}
}
type noteAudioPreloader struct {
CreatorUser func(...psql.PreloadOption) psql.Preloader
DeletorUser func(...psql.PreloadOption) psql.Preloader
Organization func(...psql.PreloadOption) psql.Preloader
}
func buildNoteAudioPreloader() noteAudioPreloader {
return noteAudioPreloader{
CreatorUser: func(opts ...psql.PreloadOption) psql.Preloader {
return psql.Preload[*User, UserSlice](psql.PreloadRel{
Name: "CreatorUser",
Sides: []psql.PreloadSide{
{
From: NoteAudios,
To: Users,
FromColumns: []string{"creator_id"},
ToColumns: []string{"id"},
},
},
}, Users.Columns.Names(), opts...)
},
DeletorUser: func(opts ...psql.PreloadOption) psql.Preloader {
return psql.Preload[*User, UserSlice](psql.PreloadRel{
Name: "DeletorUser",
Sides: []psql.PreloadSide{
{
From: NoteAudios,
To: Users,
FromColumns: []string{"deletor_id"},
ToColumns: []string{"id"},
},
},
}, Users.Columns.Names(), opts...)
},
Organization: func(opts ...psql.PreloadOption) psql.Preloader {
return psql.Preload[*Organization, OrganizationSlice](psql.PreloadRel{
Name: "Organization",
Sides: []psql.PreloadSide{
{
From: NoteAudios,
To: Organizations,
FromColumns: []string{"organization_id"},
ToColumns: []string{"id"},
},
},
}, Organizations.Columns.Names(), opts...)
},
}
}
type noteAudioThenLoader[Q orm.Loadable] struct {
CreatorUser func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
DeletorUser func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
Organization func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
NoteAudioBreadcrumbs func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
NoteAudioData func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
}
func buildNoteAudioThenLoader[Q orm.Loadable]() noteAudioThenLoader[Q] {
type CreatorUserLoadInterface interface {
LoadCreatorUser(context.Context, bob.Executor, ...bob.Mod[*dialect.SelectQuery]) error
}
type DeletorUserLoadInterface interface {
LoadDeletorUser(context.Context, bob.Executor, ...bob.Mod[*dialect.SelectQuery]) error
}
type OrganizationLoadInterface interface {
LoadOrganization(context.Context, bob.Executor, ...bob.Mod[*dialect.SelectQuery]) error
}
type NoteAudioBreadcrumbsLoadInterface interface {
LoadNoteAudioBreadcrumbs(context.Context, bob.Executor, ...bob.Mod[*dialect.SelectQuery]) error
}
type NoteAudioDataLoadInterface interface {
LoadNoteAudioData(context.Context, bob.Executor, ...bob.Mod[*dialect.SelectQuery]) error
}
return noteAudioThenLoader[Q]{
CreatorUser: thenLoadBuilder[Q](
"CreatorUser",
func(ctx context.Context, exec bob.Executor, retrieved CreatorUserLoadInterface, mods ...bob.Mod[*dialect.SelectQuery]) error {
return retrieved.LoadCreatorUser(ctx, exec, mods...)
},
),
DeletorUser: thenLoadBuilder[Q](
"DeletorUser",
func(ctx context.Context, exec bob.Executor, retrieved DeletorUserLoadInterface, mods ...bob.Mod[*dialect.SelectQuery]) error {
return retrieved.LoadDeletorUser(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...)
},
),
NoteAudioBreadcrumbs: thenLoadBuilder[Q](
"NoteAudioBreadcrumbs",
func(ctx context.Context, exec bob.Executor, retrieved NoteAudioBreadcrumbsLoadInterface, mods ...bob.Mod[*dialect.SelectQuery]) error {
return retrieved.LoadNoteAudioBreadcrumbs(ctx, exec, mods...)
},
),
NoteAudioData: thenLoadBuilder[Q](
"NoteAudioData",
func(ctx context.Context, exec bob.Executor, retrieved NoteAudioDataLoadInterface, mods ...bob.Mod[*dialect.SelectQuery]) error {
return retrieved.LoadNoteAudioData(ctx, exec, mods...)
},
),
}
}
// LoadCreatorUser loads the noteAudio's CreatorUser into the .R struct
func (o *NoteAudio) LoadCreatorUser(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
if o == nil {
return nil
}
// Reset the relationship
o.R.CreatorUser = nil
related, err := o.CreatorUser(mods...).One(ctx, exec)
if err != nil {
return err
}
related.R.CreatorNoteAudios = NoteAudioSlice{o}
o.R.CreatorUser = related
return nil
}
// LoadCreatorUser loads the noteAudio's CreatorUser into the .R struct
func (os NoteAudioSlice) LoadCreatorUser(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
if len(os) == 0 {
return nil
}
users, err := os.CreatorUser(mods...).All(ctx, exec)
if err != nil {
return err
}
for _, o := range os {
if o == nil {
continue
}
for _, rel := range users {
if !(o.CreatorID == rel.ID) {
continue
}
rel.R.CreatorNoteAudios = append(rel.R.CreatorNoteAudios, o)
o.R.CreatorUser = rel
break
}
}
return nil
}
// LoadDeletorUser loads the noteAudio's DeletorUser into the .R struct
func (o *NoteAudio) LoadDeletorUser(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
if o == nil {
return nil
}
// Reset the relationship
o.R.DeletorUser = nil
related, err := o.DeletorUser(mods...).One(ctx, exec)
if err != nil {
return err
}
related.R.DeletorNoteAudios = NoteAudioSlice{o}
o.R.DeletorUser = related
return nil
}
// LoadDeletorUser loads the noteAudio's DeletorUser into the .R struct
func (os NoteAudioSlice) LoadDeletorUser(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
if len(os) == 0 {
return nil
}
users, err := os.DeletorUser(mods...).All(ctx, exec)
if err != nil {
return err
}
for _, o := range os {
if o == nil {
continue
}
for _, rel := range users {
if !o.DeletorID.IsValue() {
continue
}
if !(o.DeletorID.IsValue() && o.DeletorID.MustGet() == rel.ID) {
continue
}
rel.R.DeletorNoteAudios = append(rel.R.DeletorNoteAudios, o)
o.R.DeletorUser = rel
break
}
}
return nil
}
// LoadOrganization loads the noteAudio's Organization into the .R struct
func (o *NoteAudio) 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.NoteAudios = NoteAudioSlice{o}
o.R.Organization = related
return nil
}
// LoadOrganization loads the noteAudio's Organization into the .R struct
func (os NoteAudioSlice) 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.NoteAudios = append(rel.R.NoteAudios, o)
o.R.Organization = rel
break
}
}
return nil
}
// LoadNoteAudioBreadcrumbs loads the noteAudio's NoteAudioBreadcrumbs into the .R struct
func (o *NoteAudio) LoadNoteAudioBreadcrumbs(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
if o == nil {
return nil
}
// Reset the relationship
o.R.NoteAudioBreadcrumbs = nil
related, err := o.NoteAudioBreadcrumbs(mods...).All(ctx, exec)
if err != nil {
return err
}
for _, rel := range related {
rel.R.NoteAudio = o
}
o.R.NoteAudioBreadcrumbs = related
return nil
}
// LoadNoteAudioBreadcrumbs loads the noteAudio's NoteAudioBreadcrumbs into the .R struct
func (os NoteAudioSlice) LoadNoteAudioBreadcrumbs(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
if len(os) == 0 {
return nil
}
noteAudioBreadcrumbs, err := os.NoteAudioBreadcrumbs(mods...).All(ctx, exec)
if err != nil {
return err
}
for _, o := range os {
if o == nil {
continue
}
o.R.NoteAudioBreadcrumbs = nil
}
for _, o := range os {
if o == nil {
continue
}
for _, rel := range noteAudioBreadcrumbs {
if !(o.Version == rel.NoteAudioVersion) {
continue
}
if !(o.UUID == rel.NoteAudioUUID) {
continue
}
rel.R.NoteAudio = o
o.R.NoteAudioBreadcrumbs = append(o.R.NoteAudioBreadcrumbs, rel)
}
}
return nil
}
// LoadNoteAudioData loads the noteAudio's NoteAudioData into the .R struct
func (o *NoteAudio) LoadNoteAudioData(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
if o == nil {
return nil
}
// Reset the relationship
o.R.NoteAudioData = nil
related, err := o.NoteAudioData(mods...).All(ctx, exec)
if err != nil {
return err
}
for _, rel := range related {
rel.R.NoteAudio = o
}
o.R.NoteAudioData = related
return nil
}
// LoadNoteAudioData loads the noteAudio's NoteAudioData into the .R struct
func (os NoteAudioSlice) LoadNoteAudioData(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
if len(os) == 0 {
return nil
}
noteAudioData, err := os.NoteAudioData(mods...).All(ctx, exec)
if err != nil {
return err
}
for _, o := range os {
if o == nil {
continue
}
o.R.NoteAudioData = nil
}
for _, o := range os {
if o == nil {
continue
}
for _, rel := range noteAudioData {
if !(o.Version == rel.NoteAudioVersion) {
continue
}
if !(o.UUID == rel.NoteAudioUUID) {
continue
}
rel.R.NoteAudio = o
o.R.NoteAudioData = append(o.R.NoteAudioData, rel)
}
}
return nil
}