This requires a bunch of changes since the types on these tables are much closer to the underlying types of the Fieldseeker data we are getting back from the API. I now need to use proper UUID types everywhere, which means I had to modify the bob gen config to consistently use google UUID, my UUID library of choice. I also had to add the organization_id to all the fieldseeker tables since we rely on them existing for some of our compound queries. There were some changes to the API type signatures to get things to build. I may yet regret those.
462 lines
14 KiB
Go
462 lines
14 KiB
Go
// Code generated by BobGen psql v0.0.4-0.20251216163753-8e325b7c773a+dirty. DO NOT EDIT.
|
|
// This file is meant to be re-generated in place and/or deleted at any time.
|
|
|
|
package factory
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
"time"
|
|
|
|
enums "github.com/Gleipnir-Technology/nidus-sync/db/enums"
|
|
models "github.com/Gleipnir-Technology/nidus-sync/db/models"
|
|
"github.com/aarondl/opt/omit"
|
|
"github.com/google/uuid"
|
|
"github.com/jaswdr/faker/v2"
|
|
"github.com/stephenafamo/bob"
|
|
)
|
|
|
|
type NoteAudioDatumMod interface {
|
|
Apply(context.Context, *NoteAudioDatumTemplate)
|
|
}
|
|
|
|
type NoteAudioDatumModFunc func(context.Context, *NoteAudioDatumTemplate)
|
|
|
|
func (f NoteAudioDatumModFunc) Apply(ctx context.Context, n *NoteAudioDatumTemplate) {
|
|
f(ctx, n)
|
|
}
|
|
|
|
type NoteAudioDatumModSlice []NoteAudioDatumMod
|
|
|
|
func (mods NoteAudioDatumModSlice) Apply(ctx context.Context, n *NoteAudioDatumTemplate) {
|
|
for _, f := range mods {
|
|
f.Apply(ctx, n)
|
|
}
|
|
}
|
|
|
|
// NoteAudioDatumTemplate is an object representing the database table.
|
|
// all columns are optional and should be set by mods
|
|
type NoteAudioDatumTemplate struct {
|
|
Created func() time.Time
|
|
NoteAudioVersion func() int32
|
|
NoteAudioUUID func() uuid.UUID
|
|
Type func() enums.Audiodatatype
|
|
|
|
r noteAudioDatumR
|
|
f *Factory
|
|
|
|
alreadyPersisted bool
|
|
}
|
|
|
|
type noteAudioDatumR struct {
|
|
NoteAudio *noteAudioDatumRNoteAudioR
|
|
}
|
|
|
|
type noteAudioDatumRNoteAudioR struct {
|
|
o *NoteAudioTemplate
|
|
}
|
|
|
|
// Apply mods to the NoteAudioDatumTemplate
|
|
func (o *NoteAudioDatumTemplate) Apply(ctx context.Context, mods ...NoteAudioDatumMod) {
|
|
for _, mod := range mods {
|
|
mod.Apply(ctx, o)
|
|
}
|
|
}
|
|
|
|
// setModelRels creates and sets the relationships on *models.NoteAudioDatum
|
|
// according to the relationships in the template. Nothing is inserted into the db
|
|
func (t NoteAudioDatumTemplate) setModelRels(o *models.NoteAudioDatum) {
|
|
if t.r.NoteAudio != nil {
|
|
rel := t.r.NoteAudio.o.Build()
|
|
rel.R.NoteAudioData = append(rel.R.NoteAudioData, o)
|
|
o.NoteAudioVersion = rel.Version // h2
|
|
o.NoteAudioUUID = rel.UUID // h2
|
|
o.R.NoteAudio = rel
|
|
}
|
|
}
|
|
|
|
// BuildSetter returns an *models.NoteAudioDatumSetter
|
|
// this does nothing with the relationship templates
|
|
func (o NoteAudioDatumTemplate) BuildSetter() *models.NoteAudioDatumSetter {
|
|
m := &models.NoteAudioDatumSetter{}
|
|
|
|
if o.Created != nil {
|
|
val := o.Created()
|
|
m.Created = omit.From(val)
|
|
}
|
|
if o.NoteAudioVersion != nil {
|
|
val := o.NoteAudioVersion()
|
|
m.NoteAudioVersion = omit.From(val)
|
|
}
|
|
if o.NoteAudioUUID != nil {
|
|
val := o.NoteAudioUUID()
|
|
m.NoteAudioUUID = omit.From(val)
|
|
}
|
|
if o.Type != nil {
|
|
val := o.Type()
|
|
m.Type = omit.From(val)
|
|
}
|
|
|
|
return m
|
|
}
|
|
|
|
// BuildManySetter returns an []*models.NoteAudioDatumSetter
|
|
// this does nothing with the relationship templates
|
|
func (o NoteAudioDatumTemplate) BuildManySetter(number int) []*models.NoteAudioDatumSetter {
|
|
m := make([]*models.NoteAudioDatumSetter, number)
|
|
|
|
for i := range m {
|
|
m[i] = o.BuildSetter()
|
|
}
|
|
|
|
return m
|
|
}
|
|
|
|
// Build returns an *models.NoteAudioDatum
|
|
// Related objects are also created and placed in the .R field
|
|
// NOTE: Objects are not inserted into the database. Use NoteAudioDatumTemplate.Create
|
|
func (o NoteAudioDatumTemplate) Build() *models.NoteAudioDatum {
|
|
m := &models.NoteAudioDatum{}
|
|
|
|
if o.Created != nil {
|
|
m.Created = o.Created()
|
|
}
|
|
if o.NoteAudioVersion != nil {
|
|
m.NoteAudioVersion = o.NoteAudioVersion()
|
|
}
|
|
if o.NoteAudioUUID != nil {
|
|
m.NoteAudioUUID = o.NoteAudioUUID()
|
|
}
|
|
if o.Type != nil {
|
|
m.Type = o.Type()
|
|
}
|
|
|
|
o.setModelRels(m)
|
|
|
|
return m
|
|
}
|
|
|
|
// BuildMany returns an models.NoteAudioDatumSlice
|
|
// Related objects are also created and placed in the .R field
|
|
// NOTE: Objects are not inserted into the database. Use NoteAudioDatumTemplate.CreateMany
|
|
func (o NoteAudioDatumTemplate) BuildMany(number int) models.NoteAudioDatumSlice {
|
|
m := make(models.NoteAudioDatumSlice, number)
|
|
|
|
for i := range m {
|
|
m[i] = o.Build()
|
|
}
|
|
|
|
return m
|
|
}
|
|
|
|
func ensureCreatableNoteAudioDatum(m *models.NoteAudioDatumSetter) {
|
|
if !(m.Created.IsValue()) {
|
|
val := random_time_Time(nil)
|
|
m.Created = omit.From(val)
|
|
}
|
|
if !(m.NoteAudioVersion.IsValue()) {
|
|
val := random_int32(nil)
|
|
m.NoteAudioVersion = omit.From(val)
|
|
}
|
|
if !(m.NoteAudioUUID.IsValue()) {
|
|
val := random_uuid_UUID(nil)
|
|
m.NoteAudioUUID = omit.From(val)
|
|
}
|
|
if !(m.Type.IsValue()) {
|
|
val := random_enums_Audiodatatype(nil)
|
|
m.Type = omit.From(val)
|
|
}
|
|
}
|
|
|
|
// insertOptRels creates and inserts any optional the relationships on *models.NoteAudioDatum
|
|
// according to the relationships in the template.
|
|
// any required relationship should have already exist on the model
|
|
func (o *NoteAudioDatumTemplate) insertOptRels(ctx context.Context, exec bob.Executor, m *models.NoteAudioDatum) error {
|
|
var err error
|
|
|
|
return err
|
|
}
|
|
|
|
// Create builds a noteAudioDatum and inserts it into the database
|
|
// Relations objects are also inserted and placed in the .R field
|
|
func (o *NoteAudioDatumTemplate) Create(ctx context.Context, exec bob.Executor) (*models.NoteAudioDatum, error) {
|
|
var err error
|
|
opt := o.BuildSetter()
|
|
ensureCreatableNoteAudioDatum(opt)
|
|
|
|
if o.r.NoteAudio == nil {
|
|
NoteAudioDatumMods.WithNewNoteAudio().Apply(ctx, o)
|
|
}
|
|
|
|
var rel0 *models.NoteAudio
|
|
|
|
if o.r.NoteAudio.o.alreadyPersisted {
|
|
rel0 = o.r.NoteAudio.o.Build()
|
|
} else {
|
|
rel0, err = o.r.NoteAudio.o.Create(ctx, exec)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
}
|
|
|
|
opt.NoteAudioVersion = omit.From(rel0.Version)
|
|
opt.NoteAudioUUID = omit.From(rel0.UUID)
|
|
|
|
m, err := models.NoteAudioData.Insert(opt).One(ctx, exec)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
m.R.NoteAudio = rel0
|
|
|
|
if err := o.insertOptRels(ctx, exec, m); err != nil {
|
|
return nil, err
|
|
}
|
|
return m, err
|
|
}
|
|
|
|
// MustCreate builds a noteAudioDatum and inserts it into the database
|
|
// Relations objects are also inserted and placed in the .R field
|
|
// panics if an error occurs
|
|
func (o *NoteAudioDatumTemplate) MustCreate(ctx context.Context, exec bob.Executor) *models.NoteAudioDatum {
|
|
m, err := o.Create(ctx, exec)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
return m
|
|
}
|
|
|
|
// CreateOrFail builds a noteAudioDatum and inserts it into the database
|
|
// Relations objects are also inserted and placed in the .R field
|
|
// It calls `tb.Fatal(err)` on the test/benchmark if an error occurs
|
|
func (o *NoteAudioDatumTemplate) CreateOrFail(ctx context.Context, tb testing.TB, exec bob.Executor) *models.NoteAudioDatum {
|
|
tb.Helper()
|
|
m, err := o.Create(ctx, exec)
|
|
if err != nil {
|
|
tb.Fatal(err)
|
|
return nil
|
|
}
|
|
return m
|
|
}
|
|
|
|
// CreateMany builds multiple noteAudioData and inserts them into the database
|
|
// Relations objects are also inserted and placed in the .R field
|
|
func (o NoteAudioDatumTemplate) CreateMany(ctx context.Context, exec bob.Executor, number int) (models.NoteAudioDatumSlice, error) {
|
|
var err error
|
|
m := make(models.NoteAudioDatumSlice, number)
|
|
|
|
for i := range m {
|
|
m[i], err = o.Create(ctx, exec)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
}
|
|
|
|
return m, nil
|
|
}
|
|
|
|
// MustCreateMany builds multiple noteAudioData and inserts them into the database
|
|
// Relations objects are also inserted and placed in the .R field
|
|
// panics if an error occurs
|
|
func (o NoteAudioDatumTemplate) MustCreateMany(ctx context.Context, exec bob.Executor, number int) models.NoteAudioDatumSlice {
|
|
m, err := o.CreateMany(ctx, exec, number)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
return m
|
|
}
|
|
|
|
// CreateManyOrFail builds multiple noteAudioData and inserts them into the database
|
|
// Relations objects are also inserted and placed in the .R field
|
|
// It calls `tb.Fatal(err)` on the test/benchmark if an error occurs
|
|
func (o NoteAudioDatumTemplate) CreateManyOrFail(ctx context.Context, tb testing.TB, exec bob.Executor, number int) models.NoteAudioDatumSlice {
|
|
tb.Helper()
|
|
m, err := o.CreateMany(ctx, exec, number)
|
|
if err != nil {
|
|
tb.Fatal(err)
|
|
return nil
|
|
}
|
|
return m
|
|
}
|
|
|
|
// NoteAudioDatum has methods that act as mods for the NoteAudioDatumTemplate
|
|
var NoteAudioDatumMods noteAudioDatumMods
|
|
|
|
type noteAudioDatumMods struct{}
|
|
|
|
func (m noteAudioDatumMods) RandomizeAllColumns(f *faker.Faker) NoteAudioDatumMod {
|
|
return NoteAudioDatumModSlice{
|
|
NoteAudioDatumMods.RandomCreated(f),
|
|
NoteAudioDatumMods.RandomNoteAudioVersion(f),
|
|
NoteAudioDatumMods.RandomNoteAudioUUID(f),
|
|
NoteAudioDatumMods.RandomType(f),
|
|
}
|
|
}
|
|
|
|
// Set the model columns to this value
|
|
func (m noteAudioDatumMods) Created(val time.Time) NoteAudioDatumMod {
|
|
return NoteAudioDatumModFunc(func(_ context.Context, o *NoteAudioDatumTemplate) {
|
|
o.Created = func() time.Time { return val }
|
|
})
|
|
}
|
|
|
|
// Set the Column from the function
|
|
func (m noteAudioDatumMods) CreatedFunc(f func() time.Time) NoteAudioDatumMod {
|
|
return NoteAudioDatumModFunc(func(_ context.Context, o *NoteAudioDatumTemplate) {
|
|
o.Created = f
|
|
})
|
|
}
|
|
|
|
// Clear any values for the column
|
|
func (m noteAudioDatumMods) UnsetCreated() NoteAudioDatumMod {
|
|
return NoteAudioDatumModFunc(func(_ context.Context, o *NoteAudioDatumTemplate) {
|
|
o.Created = nil
|
|
})
|
|
}
|
|
|
|
// Generates a random value for the column using the given faker
|
|
// if faker is nil, a default faker is used
|
|
func (m noteAudioDatumMods) RandomCreated(f *faker.Faker) NoteAudioDatumMod {
|
|
return NoteAudioDatumModFunc(func(_ context.Context, o *NoteAudioDatumTemplate) {
|
|
o.Created = func() time.Time {
|
|
return random_time_Time(f)
|
|
}
|
|
})
|
|
}
|
|
|
|
// Set the model columns to this value
|
|
func (m noteAudioDatumMods) NoteAudioVersion(val int32) NoteAudioDatumMod {
|
|
return NoteAudioDatumModFunc(func(_ context.Context, o *NoteAudioDatumTemplate) {
|
|
o.NoteAudioVersion = func() int32 { return val }
|
|
})
|
|
}
|
|
|
|
// Set the Column from the function
|
|
func (m noteAudioDatumMods) NoteAudioVersionFunc(f func() int32) NoteAudioDatumMod {
|
|
return NoteAudioDatumModFunc(func(_ context.Context, o *NoteAudioDatumTemplate) {
|
|
o.NoteAudioVersion = f
|
|
})
|
|
}
|
|
|
|
// Clear any values for the column
|
|
func (m noteAudioDatumMods) UnsetNoteAudioVersion() NoteAudioDatumMod {
|
|
return NoteAudioDatumModFunc(func(_ context.Context, o *NoteAudioDatumTemplate) {
|
|
o.NoteAudioVersion = nil
|
|
})
|
|
}
|
|
|
|
// Generates a random value for the column using the given faker
|
|
// if faker is nil, a default faker is used
|
|
func (m noteAudioDatumMods) RandomNoteAudioVersion(f *faker.Faker) NoteAudioDatumMod {
|
|
return NoteAudioDatumModFunc(func(_ context.Context, o *NoteAudioDatumTemplate) {
|
|
o.NoteAudioVersion = func() int32 {
|
|
return random_int32(f)
|
|
}
|
|
})
|
|
}
|
|
|
|
// Set the model columns to this value
|
|
func (m noteAudioDatumMods) NoteAudioUUID(val uuid.UUID) NoteAudioDatumMod {
|
|
return NoteAudioDatumModFunc(func(_ context.Context, o *NoteAudioDatumTemplate) {
|
|
o.NoteAudioUUID = func() uuid.UUID { return val }
|
|
})
|
|
}
|
|
|
|
// Set the Column from the function
|
|
func (m noteAudioDatumMods) NoteAudioUUIDFunc(f func() uuid.UUID) NoteAudioDatumMod {
|
|
return NoteAudioDatumModFunc(func(_ context.Context, o *NoteAudioDatumTemplate) {
|
|
o.NoteAudioUUID = f
|
|
})
|
|
}
|
|
|
|
// Clear any values for the column
|
|
func (m noteAudioDatumMods) UnsetNoteAudioUUID() NoteAudioDatumMod {
|
|
return NoteAudioDatumModFunc(func(_ context.Context, o *NoteAudioDatumTemplate) {
|
|
o.NoteAudioUUID = nil
|
|
})
|
|
}
|
|
|
|
// Generates a random value for the column using the given faker
|
|
// if faker is nil, a default faker is used
|
|
func (m noteAudioDatumMods) RandomNoteAudioUUID(f *faker.Faker) NoteAudioDatumMod {
|
|
return NoteAudioDatumModFunc(func(_ context.Context, o *NoteAudioDatumTemplate) {
|
|
o.NoteAudioUUID = func() uuid.UUID {
|
|
return random_uuid_UUID(f)
|
|
}
|
|
})
|
|
}
|
|
|
|
// Set the model columns to this value
|
|
func (m noteAudioDatumMods) Type(val enums.Audiodatatype) NoteAudioDatumMod {
|
|
return NoteAudioDatumModFunc(func(_ context.Context, o *NoteAudioDatumTemplate) {
|
|
o.Type = func() enums.Audiodatatype { return val }
|
|
})
|
|
}
|
|
|
|
// Set the Column from the function
|
|
func (m noteAudioDatumMods) TypeFunc(f func() enums.Audiodatatype) NoteAudioDatumMod {
|
|
return NoteAudioDatumModFunc(func(_ context.Context, o *NoteAudioDatumTemplate) {
|
|
o.Type = f
|
|
})
|
|
}
|
|
|
|
// Clear any values for the column
|
|
func (m noteAudioDatumMods) UnsetType() NoteAudioDatumMod {
|
|
return NoteAudioDatumModFunc(func(_ context.Context, o *NoteAudioDatumTemplate) {
|
|
o.Type = nil
|
|
})
|
|
}
|
|
|
|
// Generates a random value for the column using the given faker
|
|
// if faker is nil, a default faker is used
|
|
func (m noteAudioDatumMods) RandomType(f *faker.Faker) NoteAudioDatumMod {
|
|
return NoteAudioDatumModFunc(func(_ context.Context, o *NoteAudioDatumTemplate) {
|
|
o.Type = func() enums.Audiodatatype {
|
|
return random_enums_Audiodatatype(f)
|
|
}
|
|
})
|
|
}
|
|
|
|
func (m noteAudioDatumMods) WithParentsCascading() NoteAudioDatumMod {
|
|
return NoteAudioDatumModFunc(func(ctx context.Context, o *NoteAudioDatumTemplate) {
|
|
if isDone, _ := noteAudioDatumWithParentsCascadingCtx.Value(ctx); isDone {
|
|
return
|
|
}
|
|
ctx = noteAudioDatumWithParentsCascadingCtx.WithValue(ctx, true)
|
|
{
|
|
|
|
related := o.f.NewNoteAudioWithContext(ctx, NoteAudioMods.WithParentsCascading())
|
|
m.WithNoteAudio(related).Apply(ctx, o)
|
|
}
|
|
})
|
|
}
|
|
|
|
func (m noteAudioDatumMods) WithNoteAudio(rel *NoteAudioTemplate) NoteAudioDatumMod {
|
|
return NoteAudioDatumModFunc(func(ctx context.Context, o *NoteAudioDatumTemplate) {
|
|
o.r.NoteAudio = ¬eAudioDatumRNoteAudioR{
|
|
o: rel,
|
|
}
|
|
})
|
|
}
|
|
|
|
func (m noteAudioDatumMods) WithNewNoteAudio(mods ...NoteAudioMod) NoteAudioDatumMod {
|
|
return NoteAudioDatumModFunc(func(ctx context.Context, o *NoteAudioDatumTemplate) {
|
|
related := o.f.NewNoteAudioWithContext(ctx, mods...)
|
|
|
|
m.WithNoteAudio(related).Apply(ctx, o)
|
|
})
|
|
}
|
|
|
|
func (m noteAudioDatumMods) WithExistingNoteAudio(em *models.NoteAudio) NoteAudioDatumMod {
|
|
return NoteAudioDatumModFunc(func(ctx context.Context, o *NoteAudioDatumTemplate) {
|
|
o.r.NoteAudio = ¬eAudioDatumRNoteAudioR{
|
|
o: o.f.FromExistingNoteAudio(em),
|
|
}
|
|
})
|
|
}
|
|
|
|
func (m noteAudioDatumMods) WithoutNoteAudio() NoteAudioDatumMod {
|
|
return NoteAudioDatumModFunc(func(ctx context.Context, o *NoteAudioDatumTemplate) {
|
|
o.r.NoteAudio = nil
|
|
})
|
|
}
|