Split out ability to upload flyover data from pool uploads

Tons of changes here, all in the name of quickly getting to where I can
create test compliance letters.
This commit is contained in:
Eli Ribble 2026-03-02 18:49:02 +00:00
parent 9939434cb3
commit ff2ec0ad14
No known key found for this signature in database
38 changed files with 4204 additions and 233 deletions

View file

@ -0,0 +1,17 @@
// 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 dberrors
var FileuploadFlyoverAerialServiceErrors = &fileuploadFlyoverAerialServiceErrors{
ErrUniqueFlyoverAerialServicePkey: &UniqueConstraintError{
schema: "fileupload",
table: "flyover_aerial_service",
columns: []string{"id"},
s: "flyover_aerial_service_pkey",
},
}
type fileuploadFlyoverAerialServiceErrors struct {
ErrUniqueFlyoverAerialServicePkey *UniqueConstraintError
}

View file

@ -0,0 +1,217 @@
// 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 dbinfo
import "github.com/aarondl/opt/null"
var FileuploadFlyoverAerialServices = Table[
fileuploadFlyoverAerialServiceColumns,
fileuploadFlyoverAerialServiceIndexes,
fileuploadFlyoverAerialServiceForeignKeys,
fileuploadFlyoverAerialServiceUniques,
fileuploadFlyoverAerialServiceChecks,
]{
Schema: "fileupload",
Name: "flyover_aerial_service",
Columns: fileuploadFlyoverAerialServiceColumns{
Committed: column{
Name: "committed",
DBType: "boolean",
Default: "",
Comment: "",
Nullable: false,
Generated: false,
AutoIncr: false,
},
Condition: column{
Name: "condition",
DBType: "fileupload.poolconditiontype",
Default: "",
Comment: "",
Nullable: false,
Generated: false,
AutoIncr: false,
},
Created: column{
Name: "created",
DBType: "timestamp without time zone",
Default: "",
Comment: "",
Nullable: false,
Generated: false,
AutoIncr: false,
},
CreatorID: column{
Name: "creator_id",
DBType: "integer",
Default: "",
Comment: "",
Nullable: false,
Generated: false,
AutoIncr: false,
},
CSVFile: column{
Name: "csv_file",
DBType: "integer",
Default: "",
Comment: "",
Nullable: false,
Generated: false,
AutoIncr: false,
},
Deleted: column{
Name: "deleted",
DBType: "timestamp without time zone",
Default: "NULL",
Comment: "",
Nullable: true,
Generated: false,
AutoIncr: false,
},
Geom: column{
Name: "geom",
DBType: "geometry",
Default: "NULL",
Comment: "",
Nullable: true,
Generated: false,
AutoIncr: false,
},
H3cell: column{
Name: "h3cell",
DBType: "h3index",
Default: "NULL",
Comment: "",
Nullable: true,
Generated: false,
AutoIncr: false,
},
ID: column{
Name: "id",
DBType: "integer",
Default: "nextval('fileupload.flyover_aerial_service_id_seq'::regclass)",
Comment: "",
Nullable: false,
Generated: false,
AutoIncr: false,
},
OrganizationID: column{
Name: "organization_id",
DBType: "integer",
Default: "",
Comment: "",
Nullable: false,
Generated: false,
AutoIncr: false,
},
},
Indexes: fileuploadFlyoverAerialServiceIndexes{
FlyoverAerialServicePkey: index{
Type: "btree",
Name: "flyover_aerial_service_pkey",
Columns: []indexColumn{
{
Name: "id",
Desc: null.FromCond(false, true),
IsExpression: false,
},
},
Unique: true,
Comment: "",
NullsFirst: []bool{false},
NullsDistinct: false,
Where: "",
Include: []string{},
},
},
PrimaryKey: &constraint{
Name: "flyover_aerial_service_pkey",
Columns: []string{"id"},
Comment: "",
},
ForeignKeys: fileuploadFlyoverAerialServiceForeignKeys{
FileuploadFlyoverAerialServiceFlyoverAerialServiceCreatorIDFkey: foreignKey{
constraint: constraint{
Name: "fileupload.flyover_aerial_service.flyover_aerial_service_creator_id_fkey",
Columns: []string{"creator_id"},
Comment: "",
},
ForeignTable: "user_",
ForeignColumns: []string{"id"},
},
FileuploadFlyoverAerialServiceFlyoverAerialServiceCSVFileFkey: foreignKey{
constraint: constraint{
Name: "fileupload.flyover_aerial_service.flyover_aerial_service_csv_file_fkey",
Columns: []string{"csv_file"},
Comment: "",
},
ForeignTable: "fileupload.csv",
ForeignColumns: []string{"file_id"},
},
FileuploadFlyoverAerialServiceFlyoverAerialServiceOrganizationIDFkey: foreignKey{
constraint: constraint{
Name: "fileupload.flyover_aerial_service.flyover_aerial_service_organization_id_fkey",
Columns: []string{"organization_id"},
Comment: "",
},
ForeignTable: "organization",
ForeignColumns: []string{"id"},
},
},
Comment: "",
}
type fileuploadFlyoverAerialServiceColumns struct {
Committed column
Condition column
Created column
CreatorID column
CSVFile column
Deleted column
Geom column
H3cell column
ID column
OrganizationID column
}
func (c fileuploadFlyoverAerialServiceColumns) AsSlice() []column {
return []column{
c.Committed, c.Condition, c.Created, c.CreatorID, c.CSVFile, c.Deleted, c.Geom, c.H3cell, c.ID, c.OrganizationID,
}
}
type fileuploadFlyoverAerialServiceIndexes struct {
FlyoverAerialServicePkey index
}
func (i fileuploadFlyoverAerialServiceIndexes) AsSlice() []index {
return []index{
i.FlyoverAerialServicePkey,
}
}
type fileuploadFlyoverAerialServiceForeignKeys struct {
FileuploadFlyoverAerialServiceFlyoverAerialServiceCreatorIDFkey foreignKey
FileuploadFlyoverAerialServiceFlyoverAerialServiceCSVFileFkey foreignKey
FileuploadFlyoverAerialServiceFlyoverAerialServiceOrganizationIDFkey foreignKey
}
func (f fileuploadFlyoverAerialServiceForeignKeys) AsSlice() []foreignKey {
return []foreignKey{
f.FileuploadFlyoverAerialServiceFlyoverAerialServiceCreatorIDFkey, f.FileuploadFlyoverAerialServiceFlyoverAerialServiceCSVFileFkey, f.FileuploadFlyoverAerialServiceFlyoverAerialServiceOrganizationIDFkey,
}
}
type fileuploadFlyoverAerialServiceUniques struct{}
func (u fileuploadFlyoverAerialServiceUniques) AsSlice() []constraint {
return []constraint{}
}
type fileuploadFlyoverAerialServiceChecks struct{}
func (c fileuploadFlyoverAerialServiceChecks) AsSlice() []check {
return []check{}
}

View file

@ -986,11 +986,13 @@ func (e *Countrytype) Scan(value any) error {
// Enum values for FileuploadCsvtype
const (
FileuploadCsvtypePoollist FileuploadCsvtype = "PoolList"
FileuploadCsvtypeFlyover FileuploadCsvtype = "Flyover"
)
func AllFileuploadCsvtype() []FileuploadCsvtype {
return []FileuploadCsvtype{
FileuploadCsvtypePoollist,
FileuploadCsvtypeFlyover,
}
}
@ -1002,7 +1004,8 @@ func (e FileuploadCsvtype) String() string {
func (e FileuploadCsvtype) Valid() bool {
switch e {
case FileuploadCsvtypePoollist:
case FileuploadCsvtypePoollist,
FileuploadCsvtypeFlyover:
return true
default:
return false

View file

@ -236,10 +236,11 @@ var (
fieldseekerSyncRelOrganizationCtx = newContextual[bool]("fieldseeker_sync.organization.fieldseeker_sync.fieldseeker_sync_organization_id_fkey")
// Relationship Contexts for fileupload.csv
fileuploadCSVWithParentsCascadingCtx = newContextual[bool]("fileuploadCSVWithParentsCascading")
fileuploadCSVRelFileCtx = newContextual[bool]("fileupload.csv.fileupload.file.fileupload.csv.csv_file_id_fkey")
fileuploadCSVRelCSVFileErrorCSVSCtx = newContextual[bool]("fileupload.csv.fileupload.error_csv.fileupload.error_csv.error_csv_csv_file_id_fkey")
fileuploadCSVRelCSVFilePoolsCtx = newContextual[bool]("fileupload.csv.fileupload.pool.fileupload.pool.pool_csv_file_fkey")
fileuploadCSVWithParentsCascadingCtx = newContextual[bool]("fileuploadCSVWithParentsCascading")
fileuploadCSVRelFileCtx = newContextual[bool]("fileupload.csv.fileupload.file.fileupload.csv.csv_file_id_fkey")
fileuploadCSVRelCSVFileErrorCSVSCtx = newContextual[bool]("fileupload.csv.fileupload.error_csv.fileupload.error_csv.error_csv_csv_file_id_fkey")
fileuploadCSVRelCSVFileFlyoverAerialServicesCtx = newContextual[bool]("fileupload.csv.fileupload.flyover_aerial_service.fileupload.flyover_aerial_service.flyover_aerial_service_csv_file_fkey")
fileuploadCSVRelCSVFilePoolsCtx = newContextual[bool]("fileupload.csv.fileupload.pool.fileupload.pool.pool_csv_file_fkey")
// Relationship Contexts for fileupload.error_csv
fileuploadErrorCSVWithParentsCascadingCtx = newContextual[bool]("fileuploadErrorCSVWithParentsCascading")
@ -257,6 +258,12 @@ var (
fileuploadFileRelOrganizationCtx = newContextual[bool]("fileupload.file.organization.fileupload.file.file_organization_id_fkey")
fileuploadFileRelSitesCtx = newContextual[bool]("fileupload.file.site.site.site_file_id_fkey")
// Relationship Contexts for fileupload.flyover_aerial_service
fileuploadFlyoverAerialServiceWithParentsCascadingCtx = newContextual[bool]("fileuploadFlyoverAerialServiceWithParentsCascading")
fileuploadFlyoverAerialServiceRelCreatorUserCtx = newContextual[bool]("fileupload.flyover_aerial_service.user_.fileupload.flyover_aerial_service.flyover_aerial_service_creator_id_fkey")
fileuploadFlyoverAerialServiceRelCSVFileCSVCtx = newContextual[bool]("fileupload.csv.fileupload.flyover_aerial_service.fileupload.flyover_aerial_service.flyover_aerial_service_csv_file_fkey")
fileuploadFlyoverAerialServiceRelOrganizationCtx = newContextual[bool]("fileupload.flyover_aerial_service.organization.fileupload.flyover_aerial_service.flyover_aerial_service_organization_id_fkey")
// Relationship Contexts for fileupload.pool
fileuploadPoolWithParentsCascadingCtx = newContextual[bool]("fileuploadPoolWithParentsCascading")
fileuploadPoolRelCreatorUserCtx = newContextual[bool]("fileupload.pool.user_.fileupload.pool.pool_creator_id_fkey")
@ -350,6 +357,7 @@ var (
organizationRelZones2sCtx = newContextual[bool]("fieldseeker.zones2.organization.fieldseeker.zones2.zones2_organization_id_fkey")
organizationRelFieldseekerSyncsCtx = newContextual[bool]("fieldseeker_sync.organization.fieldseeker_sync.fieldseeker_sync_organization_id_fkey")
organizationRelFilesCtx = newContextual[bool]("fileupload.file.organization.fileupload.file.file_organization_id_fkey")
organizationRelFlyoverAerialServicesCtx = newContextual[bool]("fileupload.flyover_aerial_service.organization.fileupload.flyover_aerial_service.flyover_aerial_service_organization_id_fkey")
organizationRelPoolsCtx = newContextual[bool]("fileupload.pool.organization.fileupload.pool.pool_organization_id_fkey")
organizationRelH3AggregationsCtx = newContextual[bool]("h3_aggregation.organization.h3_aggregation.h3_aggregation_organization_id_fkey")
organizationRelNoteAudiosCtx = newContextual[bool]("note_audio.organization.note_audio.note_audio_organization_id_fkey")
@ -481,6 +489,7 @@ var (
userRelPublicUserUserCtx = newContextual[bool]("arcgis.user_.user_.arcgis.user_.user__public_user_id_fkey")
userRelCreatorComplianceReportRequestsCtx = newContextual[bool]("compliance_report_request.user_.compliance_report_request.compliance_report_request_creator_fkey")
userRelCreatorFilesCtx = newContextual[bool]("fileupload.file.user_.fileupload.file.file_creator_id_fkey")
userRelCreatorFlyoverAerialServicesCtx = newContextual[bool]("fileupload.flyover_aerial_service.user_.fileupload.flyover_aerial_service.flyover_aerial_service_creator_id_fkey")
userRelFileuploadPoolCtx = newContextual[bool]("fileupload.pool.user_.fileupload.pool.pool_creator_id_fkey")
userRelCreatorNoteAudiosCtx = newContextual[bool]("note_audio.user_.note_audio.note_audio_creator_id_fkey")
userRelDeletorNoteAudiosCtx = newContextual[bool]("note_audio.user_.note_audio.note_audio_deletor_id_fkey")

View file

@ -72,6 +72,7 @@ type Factory struct {
baseFileuploadErrorCSVMods FileuploadErrorCSVModSlice
baseFileuploadErrorFileMods FileuploadErrorFileModSlice
baseFileuploadFileMods FileuploadFileModSlice
baseFileuploadFlyoverAerialServiceMods FileuploadFlyoverAerialServiceModSlice
baseFileuploadPoolMods FileuploadPoolModSlice
baseGeographyColumnMods GeographyColumnModSlice
baseGeometryColumnMods GeometryColumnModSlice
@ -2706,6 +2707,9 @@ func (f *Factory) FromExistingFileuploadCSV(m *models.FileuploadCSV) *Fileupload
if len(m.R.CSVFileErrorCSVS) > 0 {
FileuploadCSVMods.AddExistingCSVFileErrorCSVS(m.R.CSVFileErrorCSVS...).Apply(ctx, o)
}
if len(m.R.CSVFileFlyoverAerialServices) > 0 {
FileuploadCSVMods.AddExistingCSVFileFlyoverAerialServices(m.R.CSVFileFlyoverAerialServices...).Apply(ctx, o)
}
if len(m.R.CSVFilePools) > 0 {
FileuploadCSVMods.AddExistingCSVFilePools(m.R.CSVFilePools...).Apply(ctx, o)
}
@ -2827,6 +2831,50 @@ func (f *Factory) FromExistingFileuploadFile(m *models.FileuploadFile) *Fileuplo
return o
}
func (f *Factory) NewFileuploadFlyoverAerialService(mods ...FileuploadFlyoverAerialServiceMod) *FileuploadFlyoverAerialServiceTemplate {
return f.NewFileuploadFlyoverAerialServiceWithContext(context.Background(), mods...)
}
func (f *Factory) NewFileuploadFlyoverAerialServiceWithContext(ctx context.Context, mods ...FileuploadFlyoverAerialServiceMod) *FileuploadFlyoverAerialServiceTemplate {
o := &FileuploadFlyoverAerialServiceTemplate{f: f}
if f != nil {
f.baseFileuploadFlyoverAerialServiceMods.Apply(ctx, o)
}
FileuploadFlyoverAerialServiceModSlice(mods).Apply(ctx, o)
return o
}
func (f *Factory) FromExistingFileuploadFlyoverAerialService(m *models.FileuploadFlyoverAerialService) *FileuploadFlyoverAerialServiceTemplate {
o := &FileuploadFlyoverAerialServiceTemplate{f: f, alreadyPersisted: true}
o.Committed = func() bool { return m.Committed }
o.Condition = func() enums.FileuploadPoolconditiontype { return m.Condition }
o.Created = func() time.Time { return m.Created }
o.CreatorID = func() int32 { return m.CreatorID }
o.CSVFile = func() int32 { return m.CSVFile }
o.Deleted = func() null.Val[time.Time] { return m.Deleted }
o.Geom = func() null.Val[string] { return m.Geom }
o.H3cell = func() null.Val[string] { return m.H3cell }
o.ID = func() int32 { return m.ID }
o.OrganizationID = func() int32 { return m.OrganizationID }
ctx := context.Background()
if m.R.CreatorUser != nil {
FileuploadFlyoverAerialServiceMods.WithExistingCreatorUser(m.R.CreatorUser).Apply(ctx, o)
}
if m.R.CSVFileCSV != nil {
FileuploadFlyoverAerialServiceMods.WithExistingCSVFileCSV(m.R.CSVFileCSV).Apply(ctx, o)
}
if m.R.Organization != nil {
FileuploadFlyoverAerialServiceMods.WithExistingOrganization(m.R.Organization).Apply(ctx, o)
}
return o
}
func (f *Factory) NewFileuploadPool(mods ...FileuploadPoolMod) *FileuploadPoolTemplate {
return f.NewFileuploadPoolWithContext(context.Background(), mods...)
}
@ -3430,6 +3478,9 @@ func (f *Factory) FromExistingOrganization(m *models.Organization) *Organization
if len(m.R.Files) > 0 {
OrganizationMods.AddExistingFiles(m.R.Files...).Apply(ctx, o)
}
if len(m.R.FlyoverAerialServices) > 0 {
OrganizationMods.AddExistingFlyoverAerialServices(m.R.FlyoverAerialServices...).Apply(ctx, o)
}
if len(m.R.Pools) > 0 {
OrganizationMods.AddExistingPools(m.R.Pools...).Apply(ctx, o)
}
@ -4404,6 +4455,9 @@ func (f *Factory) FromExistingUser(m *models.User) *UserTemplate {
if len(m.R.CreatorFiles) > 0 {
UserMods.AddExistingCreatorFiles(m.R.CreatorFiles...).Apply(ctx, o)
}
if len(m.R.CreatorFlyoverAerialServices) > 0 {
UserMods.AddExistingCreatorFlyoverAerialServices(m.R.CreatorFlyoverAerialServices...).Apply(ctx, o)
}
if len(m.R.FileuploadPool) > 0 {
UserMods.AddExistingFileuploadPool(m.R.FileuploadPool...).Apply(ctx, o)
}
@ -4862,6 +4916,14 @@ func (f *Factory) AddBaseFileuploadFileMod(mods ...FileuploadFileMod) {
f.baseFileuploadFileMods = append(f.baseFileuploadFileMods, mods...)
}
func (f *Factory) ClearBaseFileuploadFlyoverAerialServiceMods() {
f.baseFileuploadFlyoverAerialServiceMods = nil
}
func (f *Factory) AddBaseFileuploadFlyoverAerialServiceMod(mods ...FileuploadFlyoverAerialServiceMod) {
f.baseFileuploadFlyoverAerialServiceMods = append(f.baseFileuploadFlyoverAerialServiceMods, mods...)
}
func (f *Factory) ClearBaseFileuploadPoolMods() {
f.baseFileuploadPoolMods = nil
}

View file

@ -50,9 +50,10 @@ type FileuploadCSVTemplate struct {
}
type fileuploadCSVR struct {
File *fileuploadCSVRFileR
CSVFileErrorCSVS []*fileuploadCSVRCSVFileErrorCSVSR
CSVFilePools []*fileuploadCSVRCSVFilePoolsR
File *fileuploadCSVRFileR
CSVFileErrorCSVS []*fileuploadCSVRCSVFileErrorCSVSR
CSVFileFlyoverAerialServices []*fileuploadCSVRCSVFileFlyoverAerialServicesR
CSVFilePools []*fileuploadCSVRCSVFilePoolsR
}
type fileuploadCSVRFileR struct {
@ -62,6 +63,10 @@ type fileuploadCSVRCSVFileErrorCSVSR struct {
number int
o *FileuploadErrorCSVTemplate
}
type fileuploadCSVRCSVFileFlyoverAerialServicesR struct {
number int
o *FileuploadFlyoverAerialServiceTemplate
}
type fileuploadCSVRCSVFilePoolsR struct {
number int
o *FileuploadPoolTemplate
@ -97,6 +102,19 @@ func (t FileuploadCSVTemplate) setModelRels(o *models.FileuploadCSV) {
o.R.CSVFileErrorCSVS = rel
}
if t.r.CSVFileFlyoverAerialServices != nil {
rel := models.FileuploadFlyoverAerialServiceSlice{}
for _, r := range t.r.CSVFileFlyoverAerialServices {
related := r.o.BuildMany(r.number)
for _, rel := range related {
rel.CSVFile = o.FileID // h2
rel.R.CSVFileCSV = o
}
rel = append(rel, related...)
}
o.R.CSVFileFlyoverAerialServices = rel
}
if t.r.CSVFilePools != nil {
rel := models.FileuploadPoolSlice{}
for _, r := range t.r.CSVFilePools {
@ -226,6 +244,26 @@ func (o *FileuploadCSVTemplate) insertOptRels(ctx context.Context, exec bob.Exec
}
}
isCSVFileFlyoverAerialServicesDone, _ := fileuploadCSVRelCSVFileFlyoverAerialServicesCtx.Value(ctx)
if !isCSVFileFlyoverAerialServicesDone && o.r.CSVFileFlyoverAerialServices != nil {
ctx = fileuploadCSVRelCSVFileFlyoverAerialServicesCtx.WithValue(ctx, true)
for _, r := range o.r.CSVFileFlyoverAerialServices {
if r.o.alreadyPersisted {
m.R.CSVFileFlyoverAerialServices = append(m.R.CSVFileFlyoverAerialServices, r.o.Build())
} else {
rel2, err := r.o.CreateMany(ctx, exec, r.number)
if err != nil {
return err
}
err = m.AttachCSVFileFlyoverAerialServices(ctx, exec, rel2...)
if err != nil {
return err
}
}
}
}
isCSVFilePoolsDone, _ := fileuploadCSVRelCSVFilePoolsCtx.Value(ctx)
if !isCSVFilePoolsDone && o.r.CSVFilePools != nil {
ctx = fileuploadCSVRelCSVFilePoolsCtx.WithValue(ctx, true)
@ -233,12 +271,12 @@ func (o *FileuploadCSVTemplate) insertOptRels(ctx context.Context, exec bob.Exec
if r.o.alreadyPersisted {
m.R.CSVFilePools = append(m.R.CSVFilePools, r.o.Build())
} else {
rel2, err := r.o.CreateMany(ctx, exec, r.number)
rel3, err := r.o.CreateMany(ctx, exec, r.number)
if err != nil {
return err
}
err = m.AttachCSVFilePools(ctx, exec, rel2...)
err = m.AttachCSVFilePools(ctx, exec, rel3...)
if err != nil {
return err
}
@ -602,6 +640,54 @@ func (m fileuploadCSVMods) WithoutCSVFileErrorCSVS() FileuploadCSVMod {
})
}
func (m fileuploadCSVMods) WithCSVFileFlyoverAerialServices(number int, related *FileuploadFlyoverAerialServiceTemplate) FileuploadCSVMod {
return FileuploadCSVModFunc(func(ctx context.Context, o *FileuploadCSVTemplate) {
o.r.CSVFileFlyoverAerialServices = []*fileuploadCSVRCSVFileFlyoverAerialServicesR{{
number: number,
o: related,
}}
})
}
func (m fileuploadCSVMods) WithNewCSVFileFlyoverAerialServices(number int, mods ...FileuploadFlyoverAerialServiceMod) FileuploadCSVMod {
return FileuploadCSVModFunc(func(ctx context.Context, o *FileuploadCSVTemplate) {
related := o.f.NewFileuploadFlyoverAerialServiceWithContext(ctx, mods...)
m.WithCSVFileFlyoverAerialServices(number, related).Apply(ctx, o)
})
}
func (m fileuploadCSVMods) AddCSVFileFlyoverAerialServices(number int, related *FileuploadFlyoverAerialServiceTemplate) FileuploadCSVMod {
return FileuploadCSVModFunc(func(ctx context.Context, o *FileuploadCSVTemplate) {
o.r.CSVFileFlyoverAerialServices = append(o.r.CSVFileFlyoverAerialServices, &fileuploadCSVRCSVFileFlyoverAerialServicesR{
number: number,
o: related,
})
})
}
func (m fileuploadCSVMods) AddNewCSVFileFlyoverAerialServices(number int, mods ...FileuploadFlyoverAerialServiceMod) FileuploadCSVMod {
return FileuploadCSVModFunc(func(ctx context.Context, o *FileuploadCSVTemplate) {
related := o.f.NewFileuploadFlyoverAerialServiceWithContext(ctx, mods...)
m.AddCSVFileFlyoverAerialServices(number, related).Apply(ctx, o)
})
}
func (m fileuploadCSVMods) AddExistingCSVFileFlyoverAerialServices(existingModels ...*models.FileuploadFlyoverAerialService) FileuploadCSVMod {
return FileuploadCSVModFunc(func(ctx context.Context, o *FileuploadCSVTemplate) {
for _, em := range existingModels {
o.r.CSVFileFlyoverAerialServices = append(o.r.CSVFileFlyoverAerialServices, &fileuploadCSVRCSVFileFlyoverAerialServicesR{
o: o.f.FromExistingFileuploadFlyoverAerialService(em),
})
}
})
}
func (m fileuploadCSVMods) WithoutCSVFileFlyoverAerialServices() FileuploadCSVMod {
return FileuploadCSVModFunc(func(ctx context.Context, o *FileuploadCSVTemplate) {
o.r.CSVFileFlyoverAerialServices = nil
})
}
func (m fileuploadCSVMods) WithCSVFilePools(number int, related *FileuploadPoolTemplate) FileuploadCSVMod {
return FileuploadCSVModFunc(func(ctx context.Context, o *FileuploadCSVTemplate) {
o.r.CSVFilePools = []*fileuploadCSVRCSVFilePoolsR{{

View file

@ -0,0 +1,903 @@
// 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 factory
import (
"context"
"testing"
"time"
"github.com/Gleipnir-Technology/bob"
enums "github.com/Gleipnir-Technology/nidus-sync/db/enums"
models "github.com/Gleipnir-Technology/nidus-sync/db/models"
"github.com/aarondl/opt/null"
"github.com/aarondl/opt/omit"
"github.com/aarondl/opt/omitnull"
"github.com/jaswdr/faker/v2"
)
type FileuploadFlyoverAerialServiceMod interface {
Apply(context.Context, *FileuploadFlyoverAerialServiceTemplate)
}
type FileuploadFlyoverAerialServiceModFunc func(context.Context, *FileuploadFlyoverAerialServiceTemplate)
func (f FileuploadFlyoverAerialServiceModFunc) Apply(ctx context.Context, n *FileuploadFlyoverAerialServiceTemplate) {
f(ctx, n)
}
type FileuploadFlyoverAerialServiceModSlice []FileuploadFlyoverAerialServiceMod
func (mods FileuploadFlyoverAerialServiceModSlice) Apply(ctx context.Context, n *FileuploadFlyoverAerialServiceTemplate) {
for _, f := range mods {
f.Apply(ctx, n)
}
}
// FileuploadFlyoverAerialServiceTemplate is an object representing the database table.
// all columns are optional and should be set by mods
type FileuploadFlyoverAerialServiceTemplate struct {
Committed func() bool
Condition func() enums.FileuploadPoolconditiontype
Created func() time.Time
CreatorID func() int32
CSVFile func() int32
Deleted func() null.Val[time.Time]
Geom func() null.Val[string]
H3cell func() null.Val[string]
ID func() int32
OrganizationID func() int32
r fileuploadFlyoverAerialServiceR
f *Factory
alreadyPersisted bool
}
type fileuploadFlyoverAerialServiceR struct {
CreatorUser *fileuploadFlyoverAerialServiceRCreatorUserR
CSVFileCSV *fileuploadFlyoverAerialServiceRCSVFileCSVR
Organization *fileuploadFlyoverAerialServiceROrganizationR
}
type fileuploadFlyoverAerialServiceRCreatorUserR struct {
o *UserTemplate
}
type fileuploadFlyoverAerialServiceRCSVFileCSVR struct {
o *FileuploadCSVTemplate
}
type fileuploadFlyoverAerialServiceROrganizationR struct {
o *OrganizationTemplate
}
// Apply mods to the FileuploadFlyoverAerialServiceTemplate
func (o *FileuploadFlyoverAerialServiceTemplate) Apply(ctx context.Context, mods ...FileuploadFlyoverAerialServiceMod) {
for _, mod := range mods {
mod.Apply(ctx, o)
}
}
// setModelRels creates and sets the relationships on *models.FileuploadFlyoverAerialService
// according to the relationships in the template. Nothing is inserted into the db
func (t FileuploadFlyoverAerialServiceTemplate) setModelRels(o *models.FileuploadFlyoverAerialService) {
if t.r.CreatorUser != nil {
rel := t.r.CreatorUser.o.Build()
rel.R.CreatorFlyoverAerialServices = append(rel.R.CreatorFlyoverAerialServices, o)
o.CreatorID = rel.ID // h2
o.R.CreatorUser = rel
}
if t.r.CSVFileCSV != nil {
rel := t.r.CSVFileCSV.o.Build()
rel.R.CSVFileFlyoverAerialServices = append(rel.R.CSVFileFlyoverAerialServices, o)
o.CSVFile = rel.FileID // h2
o.R.CSVFileCSV = rel
}
if t.r.Organization != nil {
rel := t.r.Organization.o.Build()
rel.R.FlyoverAerialServices = append(rel.R.FlyoverAerialServices, o)
o.OrganizationID = rel.ID // h2
o.R.Organization = rel
}
}
// BuildSetter returns an *models.FileuploadFlyoverAerialServiceSetter
// this does nothing with the relationship templates
func (o FileuploadFlyoverAerialServiceTemplate) BuildSetter() *models.FileuploadFlyoverAerialServiceSetter {
m := &models.FileuploadFlyoverAerialServiceSetter{}
if o.Committed != nil {
val := o.Committed()
m.Committed = omit.From(val)
}
if o.Condition != nil {
val := o.Condition()
m.Condition = omit.From(val)
}
if o.Created != nil {
val := o.Created()
m.Created = omit.From(val)
}
if o.CreatorID != nil {
val := o.CreatorID()
m.CreatorID = omit.From(val)
}
if o.CSVFile != nil {
val := o.CSVFile()
m.CSVFile = omit.From(val)
}
if o.Deleted != nil {
val := o.Deleted()
m.Deleted = omitnull.FromNull(val)
}
if o.Geom != nil {
val := o.Geom()
m.Geom = omitnull.FromNull(val)
}
if o.H3cell != nil {
val := o.H3cell()
m.H3cell = omitnull.FromNull(val)
}
if o.ID != nil {
val := o.ID()
m.ID = omit.From(val)
}
if o.OrganizationID != nil {
val := o.OrganizationID()
m.OrganizationID = omit.From(val)
}
return m
}
// BuildManySetter returns an []*models.FileuploadFlyoverAerialServiceSetter
// this does nothing with the relationship templates
func (o FileuploadFlyoverAerialServiceTemplate) BuildManySetter(number int) []*models.FileuploadFlyoverAerialServiceSetter {
m := make([]*models.FileuploadFlyoverAerialServiceSetter, number)
for i := range m {
m[i] = o.BuildSetter()
}
return m
}
// Build returns an *models.FileuploadFlyoverAerialService
// Related objects are also created and placed in the .R field
// NOTE: Objects are not inserted into the database. Use FileuploadFlyoverAerialServiceTemplate.Create
func (o FileuploadFlyoverAerialServiceTemplate) Build() *models.FileuploadFlyoverAerialService {
m := &models.FileuploadFlyoverAerialService{}
if o.Committed != nil {
m.Committed = o.Committed()
}
if o.Condition != nil {
m.Condition = o.Condition()
}
if o.Created != nil {
m.Created = o.Created()
}
if o.CreatorID != nil {
m.CreatorID = o.CreatorID()
}
if o.CSVFile != nil {
m.CSVFile = o.CSVFile()
}
if o.Deleted != nil {
m.Deleted = o.Deleted()
}
if o.Geom != nil {
m.Geom = o.Geom()
}
if o.H3cell != nil {
m.H3cell = o.H3cell()
}
if o.ID != nil {
m.ID = o.ID()
}
if o.OrganizationID != nil {
m.OrganizationID = o.OrganizationID()
}
o.setModelRels(m)
return m
}
// BuildMany returns an models.FileuploadFlyoverAerialServiceSlice
// Related objects are also created and placed in the .R field
// NOTE: Objects are not inserted into the database. Use FileuploadFlyoverAerialServiceTemplate.CreateMany
func (o FileuploadFlyoverAerialServiceTemplate) BuildMany(number int) models.FileuploadFlyoverAerialServiceSlice {
m := make(models.FileuploadFlyoverAerialServiceSlice, number)
for i := range m {
m[i] = o.Build()
}
return m
}
func ensureCreatableFileuploadFlyoverAerialService(m *models.FileuploadFlyoverAerialServiceSetter) {
if !(m.Committed.IsValue()) {
val := random_bool(nil)
m.Committed = omit.From(val)
}
if !(m.Condition.IsValue()) {
val := random_enums_FileuploadPoolconditiontype(nil)
m.Condition = omit.From(val)
}
if !(m.Created.IsValue()) {
val := random_time_Time(nil)
m.Created = omit.From(val)
}
if !(m.CreatorID.IsValue()) {
val := random_int32(nil)
m.CreatorID = omit.From(val)
}
if !(m.CSVFile.IsValue()) {
val := random_int32(nil)
m.CSVFile = omit.From(val)
}
if !(m.OrganizationID.IsValue()) {
val := random_int32(nil)
m.OrganizationID = omit.From(val)
}
}
// insertOptRels creates and inserts any optional the relationships on *models.FileuploadFlyoverAerialService
// according to the relationships in the template.
// any required relationship should have already exist on the model
func (o *FileuploadFlyoverAerialServiceTemplate) insertOptRels(ctx context.Context, exec bob.Executor, m *models.FileuploadFlyoverAerialService) error {
var err error
return err
}
// Create builds a fileuploadFlyoverAerialService and inserts it into the database
// Relations objects are also inserted and placed in the .R field
func (o *FileuploadFlyoverAerialServiceTemplate) Create(ctx context.Context, exec bob.Executor) (*models.FileuploadFlyoverAerialService, error) {
var err error
opt := o.BuildSetter()
ensureCreatableFileuploadFlyoverAerialService(opt)
if o.r.CreatorUser == nil {
FileuploadFlyoverAerialServiceMods.WithNewCreatorUser().Apply(ctx, o)
}
var rel0 *models.User
if o.r.CreatorUser.o.alreadyPersisted {
rel0 = o.r.CreatorUser.o.Build()
} else {
rel0, err = o.r.CreatorUser.o.Create(ctx, exec)
if err != nil {
return nil, err
}
}
opt.CreatorID = omit.From(rel0.ID)
if o.r.CSVFileCSV == nil {
FileuploadFlyoverAerialServiceMods.WithNewCSVFileCSV().Apply(ctx, o)
}
var rel1 *models.FileuploadCSV
if o.r.CSVFileCSV.o.alreadyPersisted {
rel1 = o.r.CSVFileCSV.o.Build()
} else {
rel1, err = o.r.CSVFileCSV.o.Create(ctx, exec)
if err != nil {
return nil, err
}
}
opt.CSVFile = omit.From(rel1.FileID)
if o.r.Organization == nil {
FileuploadFlyoverAerialServiceMods.WithNewOrganization().Apply(ctx, o)
}
var rel2 *models.Organization
if o.r.Organization.o.alreadyPersisted {
rel2 = o.r.Organization.o.Build()
} else {
rel2, err = o.r.Organization.o.Create(ctx, exec)
if err != nil {
return nil, err
}
}
opt.OrganizationID = omit.From(rel2.ID)
m, err := models.FileuploadFlyoverAerialServices.Insert(opt).One(ctx, exec)
if err != nil {
return nil, err
}
m.R.CreatorUser = rel0
m.R.CSVFileCSV = rel1
m.R.Organization = rel2
if err := o.insertOptRels(ctx, exec, m); err != nil {
return nil, err
}
return m, err
}
// MustCreate builds a fileuploadFlyoverAerialService and inserts it into the database
// Relations objects are also inserted and placed in the .R field
// panics if an error occurs
func (o *FileuploadFlyoverAerialServiceTemplate) MustCreate(ctx context.Context, exec bob.Executor) *models.FileuploadFlyoverAerialService {
m, err := o.Create(ctx, exec)
if err != nil {
panic(err)
}
return m
}
// CreateOrFail builds a fileuploadFlyoverAerialService 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 *FileuploadFlyoverAerialServiceTemplate) CreateOrFail(ctx context.Context, tb testing.TB, exec bob.Executor) *models.FileuploadFlyoverAerialService {
tb.Helper()
m, err := o.Create(ctx, exec)
if err != nil {
tb.Fatal(err)
return nil
}
return m
}
// CreateMany builds multiple fileuploadFlyoverAerialServices and inserts them into the database
// Relations objects are also inserted and placed in the .R field
func (o FileuploadFlyoverAerialServiceTemplate) CreateMany(ctx context.Context, exec bob.Executor, number int) (models.FileuploadFlyoverAerialServiceSlice, error) {
var err error
m := make(models.FileuploadFlyoverAerialServiceSlice, number)
for i := range m {
m[i], err = o.Create(ctx, exec)
if err != nil {
return nil, err
}
}
return m, nil
}
// MustCreateMany builds multiple fileuploadFlyoverAerialServices and inserts them into the database
// Relations objects are also inserted and placed in the .R field
// panics if an error occurs
func (o FileuploadFlyoverAerialServiceTemplate) MustCreateMany(ctx context.Context, exec bob.Executor, number int) models.FileuploadFlyoverAerialServiceSlice {
m, err := o.CreateMany(ctx, exec, number)
if err != nil {
panic(err)
}
return m
}
// CreateManyOrFail builds multiple fileuploadFlyoverAerialServices 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 FileuploadFlyoverAerialServiceTemplate) CreateManyOrFail(ctx context.Context, tb testing.TB, exec bob.Executor, number int) models.FileuploadFlyoverAerialServiceSlice {
tb.Helper()
m, err := o.CreateMany(ctx, exec, number)
if err != nil {
tb.Fatal(err)
return nil
}
return m
}
// FileuploadFlyoverAerialService has methods that act as mods for the FileuploadFlyoverAerialServiceTemplate
var FileuploadFlyoverAerialServiceMods fileuploadFlyoverAerialServiceMods
type fileuploadFlyoverAerialServiceMods struct{}
func (m fileuploadFlyoverAerialServiceMods) RandomizeAllColumns(f *faker.Faker) FileuploadFlyoverAerialServiceMod {
return FileuploadFlyoverAerialServiceModSlice{
FileuploadFlyoverAerialServiceMods.RandomCommitted(f),
FileuploadFlyoverAerialServiceMods.RandomCondition(f),
FileuploadFlyoverAerialServiceMods.RandomCreated(f),
FileuploadFlyoverAerialServiceMods.RandomCreatorID(f),
FileuploadFlyoverAerialServiceMods.RandomCSVFile(f),
FileuploadFlyoverAerialServiceMods.RandomDeleted(f),
FileuploadFlyoverAerialServiceMods.RandomGeom(f),
FileuploadFlyoverAerialServiceMods.RandomH3cell(f),
FileuploadFlyoverAerialServiceMods.RandomID(f),
FileuploadFlyoverAerialServiceMods.RandomOrganizationID(f),
}
}
// Set the model columns to this value
func (m fileuploadFlyoverAerialServiceMods) Committed(val bool) FileuploadFlyoverAerialServiceMod {
return FileuploadFlyoverAerialServiceModFunc(func(_ context.Context, o *FileuploadFlyoverAerialServiceTemplate) {
o.Committed = func() bool { return val }
})
}
// Set the Column from the function
func (m fileuploadFlyoverAerialServiceMods) CommittedFunc(f func() bool) FileuploadFlyoverAerialServiceMod {
return FileuploadFlyoverAerialServiceModFunc(func(_ context.Context, o *FileuploadFlyoverAerialServiceTemplate) {
o.Committed = f
})
}
// Clear any values for the column
func (m fileuploadFlyoverAerialServiceMods) UnsetCommitted() FileuploadFlyoverAerialServiceMod {
return FileuploadFlyoverAerialServiceModFunc(func(_ context.Context, o *FileuploadFlyoverAerialServiceTemplate) {
o.Committed = nil
})
}
// Generates a random value for the column using the given faker
// if faker is nil, a default faker is used
func (m fileuploadFlyoverAerialServiceMods) RandomCommitted(f *faker.Faker) FileuploadFlyoverAerialServiceMod {
return FileuploadFlyoverAerialServiceModFunc(func(_ context.Context, o *FileuploadFlyoverAerialServiceTemplate) {
o.Committed = func() bool {
return random_bool(f)
}
})
}
// Set the model columns to this value
func (m fileuploadFlyoverAerialServiceMods) Condition(val enums.FileuploadPoolconditiontype) FileuploadFlyoverAerialServiceMod {
return FileuploadFlyoverAerialServiceModFunc(func(_ context.Context, o *FileuploadFlyoverAerialServiceTemplate) {
o.Condition = func() enums.FileuploadPoolconditiontype { return val }
})
}
// Set the Column from the function
func (m fileuploadFlyoverAerialServiceMods) ConditionFunc(f func() enums.FileuploadPoolconditiontype) FileuploadFlyoverAerialServiceMod {
return FileuploadFlyoverAerialServiceModFunc(func(_ context.Context, o *FileuploadFlyoverAerialServiceTemplate) {
o.Condition = f
})
}
// Clear any values for the column
func (m fileuploadFlyoverAerialServiceMods) UnsetCondition() FileuploadFlyoverAerialServiceMod {
return FileuploadFlyoverAerialServiceModFunc(func(_ context.Context, o *FileuploadFlyoverAerialServiceTemplate) {
o.Condition = nil
})
}
// Generates a random value for the column using the given faker
// if faker is nil, a default faker is used
func (m fileuploadFlyoverAerialServiceMods) RandomCondition(f *faker.Faker) FileuploadFlyoverAerialServiceMod {
return FileuploadFlyoverAerialServiceModFunc(func(_ context.Context, o *FileuploadFlyoverAerialServiceTemplate) {
o.Condition = func() enums.FileuploadPoolconditiontype {
return random_enums_FileuploadPoolconditiontype(f)
}
})
}
// Set the model columns to this value
func (m fileuploadFlyoverAerialServiceMods) Created(val time.Time) FileuploadFlyoverAerialServiceMod {
return FileuploadFlyoverAerialServiceModFunc(func(_ context.Context, o *FileuploadFlyoverAerialServiceTemplate) {
o.Created = func() time.Time { return val }
})
}
// Set the Column from the function
func (m fileuploadFlyoverAerialServiceMods) CreatedFunc(f func() time.Time) FileuploadFlyoverAerialServiceMod {
return FileuploadFlyoverAerialServiceModFunc(func(_ context.Context, o *FileuploadFlyoverAerialServiceTemplate) {
o.Created = f
})
}
// Clear any values for the column
func (m fileuploadFlyoverAerialServiceMods) UnsetCreated() FileuploadFlyoverAerialServiceMod {
return FileuploadFlyoverAerialServiceModFunc(func(_ context.Context, o *FileuploadFlyoverAerialServiceTemplate) {
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 fileuploadFlyoverAerialServiceMods) RandomCreated(f *faker.Faker) FileuploadFlyoverAerialServiceMod {
return FileuploadFlyoverAerialServiceModFunc(func(_ context.Context, o *FileuploadFlyoverAerialServiceTemplate) {
o.Created = func() time.Time {
return random_time_Time(f)
}
})
}
// Set the model columns to this value
func (m fileuploadFlyoverAerialServiceMods) CreatorID(val int32) FileuploadFlyoverAerialServiceMod {
return FileuploadFlyoverAerialServiceModFunc(func(_ context.Context, o *FileuploadFlyoverAerialServiceTemplate) {
o.CreatorID = func() int32 { return val }
})
}
// Set the Column from the function
func (m fileuploadFlyoverAerialServiceMods) CreatorIDFunc(f func() int32) FileuploadFlyoverAerialServiceMod {
return FileuploadFlyoverAerialServiceModFunc(func(_ context.Context, o *FileuploadFlyoverAerialServiceTemplate) {
o.CreatorID = f
})
}
// Clear any values for the column
func (m fileuploadFlyoverAerialServiceMods) UnsetCreatorID() FileuploadFlyoverAerialServiceMod {
return FileuploadFlyoverAerialServiceModFunc(func(_ context.Context, o *FileuploadFlyoverAerialServiceTemplate) {
o.CreatorID = nil
})
}
// Generates a random value for the column using the given faker
// if faker is nil, a default faker is used
func (m fileuploadFlyoverAerialServiceMods) RandomCreatorID(f *faker.Faker) FileuploadFlyoverAerialServiceMod {
return FileuploadFlyoverAerialServiceModFunc(func(_ context.Context, o *FileuploadFlyoverAerialServiceTemplate) {
o.CreatorID = func() int32 {
return random_int32(f)
}
})
}
// Set the model columns to this value
func (m fileuploadFlyoverAerialServiceMods) CSVFile(val int32) FileuploadFlyoverAerialServiceMod {
return FileuploadFlyoverAerialServiceModFunc(func(_ context.Context, o *FileuploadFlyoverAerialServiceTemplate) {
o.CSVFile = func() int32 { return val }
})
}
// Set the Column from the function
func (m fileuploadFlyoverAerialServiceMods) CSVFileFunc(f func() int32) FileuploadFlyoverAerialServiceMod {
return FileuploadFlyoverAerialServiceModFunc(func(_ context.Context, o *FileuploadFlyoverAerialServiceTemplate) {
o.CSVFile = f
})
}
// Clear any values for the column
func (m fileuploadFlyoverAerialServiceMods) UnsetCSVFile() FileuploadFlyoverAerialServiceMod {
return FileuploadFlyoverAerialServiceModFunc(func(_ context.Context, o *FileuploadFlyoverAerialServiceTemplate) {
o.CSVFile = nil
})
}
// Generates a random value for the column using the given faker
// if faker is nil, a default faker is used
func (m fileuploadFlyoverAerialServiceMods) RandomCSVFile(f *faker.Faker) FileuploadFlyoverAerialServiceMod {
return FileuploadFlyoverAerialServiceModFunc(func(_ context.Context, o *FileuploadFlyoverAerialServiceTemplate) {
o.CSVFile = func() int32 {
return random_int32(f)
}
})
}
// Set the model columns to this value
func (m fileuploadFlyoverAerialServiceMods) Deleted(val null.Val[time.Time]) FileuploadFlyoverAerialServiceMod {
return FileuploadFlyoverAerialServiceModFunc(func(_ context.Context, o *FileuploadFlyoverAerialServiceTemplate) {
o.Deleted = func() null.Val[time.Time] { return val }
})
}
// Set the Column from the function
func (m fileuploadFlyoverAerialServiceMods) DeletedFunc(f func() null.Val[time.Time]) FileuploadFlyoverAerialServiceMod {
return FileuploadFlyoverAerialServiceModFunc(func(_ context.Context, o *FileuploadFlyoverAerialServiceTemplate) {
o.Deleted = f
})
}
// Clear any values for the column
func (m fileuploadFlyoverAerialServiceMods) UnsetDeleted() FileuploadFlyoverAerialServiceMod {
return FileuploadFlyoverAerialServiceModFunc(func(_ context.Context, o *FileuploadFlyoverAerialServiceTemplate) {
o.Deleted = nil
})
}
// Generates a random value for the column using the given faker
// if faker is nil, a default faker is used
// The generated value is sometimes null
func (m fileuploadFlyoverAerialServiceMods) RandomDeleted(f *faker.Faker) FileuploadFlyoverAerialServiceMod {
return FileuploadFlyoverAerialServiceModFunc(func(_ context.Context, o *FileuploadFlyoverAerialServiceTemplate) {
o.Deleted = func() null.Val[time.Time] {
if f == nil {
f = &defaultFaker
}
val := random_time_Time(f)
return null.From(val)
}
})
}
// Generates a random value for the column using the given faker
// if faker is nil, a default faker is used
// The generated value is never null
func (m fileuploadFlyoverAerialServiceMods) RandomDeletedNotNull(f *faker.Faker) FileuploadFlyoverAerialServiceMod {
return FileuploadFlyoverAerialServiceModFunc(func(_ context.Context, o *FileuploadFlyoverAerialServiceTemplate) {
o.Deleted = func() null.Val[time.Time] {
if f == nil {
f = &defaultFaker
}
val := random_time_Time(f)
return null.From(val)
}
})
}
// Set the model columns to this value
func (m fileuploadFlyoverAerialServiceMods) Geom(val null.Val[string]) FileuploadFlyoverAerialServiceMod {
return FileuploadFlyoverAerialServiceModFunc(func(_ context.Context, o *FileuploadFlyoverAerialServiceTemplate) {
o.Geom = func() null.Val[string] { return val }
})
}
// Set the Column from the function
func (m fileuploadFlyoverAerialServiceMods) GeomFunc(f func() null.Val[string]) FileuploadFlyoverAerialServiceMod {
return FileuploadFlyoverAerialServiceModFunc(func(_ context.Context, o *FileuploadFlyoverAerialServiceTemplate) {
o.Geom = f
})
}
// Clear any values for the column
func (m fileuploadFlyoverAerialServiceMods) UnsetGeom() FileuploadFlyoverAerialServiceMod {
return FileuploadFlyoverAerialServiceModFunc(func(_ context.Context, o *FileuploadFlyoverAerialServiceTemplate) {
o.Geom = nil
})
}
// Generates a random value for the column using the given faker
// if faker is nil, a default faker is used
// The generated value is sometimes null
func (m fileuploadFlyoverAerialServiceMods) RandomGeom(f *faker.Faker) FileuploadFlyoverAerialServiceMod {
return FileuploadFlyoverAerialServiceModFunc(func(_ context.Context, o *FileuploadFlyoverAerialServiceTemplate) {
o.Geom = func() null.Val[string] {
if f == nil {
f = &defaultFaker
}
val := random_string(f)
return null.From(val)
}
})
}
// Generates a random value for the column using the given faker
// if faker is nil, a default faker is used
// The generated value is never null
func (m fileuploadFlyoverAerialServiceMods) RandomGeomNotNull(f *faker.Faker) FileuploadFlyoverAerialServiceMod {
return FileuploadFlyoverAerialServiceModFunc(func(_ context.Context, o *FileuploadFlyoverAerialServiceTemplate) {
o.Geom = func() null.Val[string] {
if f == nil {
f = &defaultFaker
}
val := random_string(f)
return null.From(val)
}
})
}
// Set the model columns to this value
func (m fileuploadFlyoverAerialServiceMods) H3cell(val null.Val[string]) FileuploadFlyoverAerialServiceMod {
return FileuploadFlyoverAerialServiceModFunc(func(_ context.Context, o *FileuploadFlyoverAerialServiceTemplate) {
o.H3cell = func() null.Val[string] { return val }
})
}
// Set the Column from the function
func (m fileuploadFlyoverAerialServiceMods) H3cellFunc(f func() null.Val[string]) FileuploadFlyoverAerialServiceMod {
return FileuploadFlyoverAerialServiceModFunc(func(_ context.Context, o *FileuploadFlyoverAerialServiceTemplate) {
o.H3cell = f
})
}
// Clear any values for the column
func (m fileuploadFlyoverAerialServiceMods) UnsetH3cell() FileuploadFlyoverAerialServiceMod {
return FileuploadFlyoverAerialServiceModFunc(func(_ context.Context, o *FileuploadFlyoverAerialServiceTemplate) {
o.H3cell = nil
})
}
// Generates a random value for the column using the given faker
// if faker is nil, a default faker is used
// The generated value is sometimes null
func (m fileuploadFlyoverAerialServiceMods) RandomH3cell(f *faker.Faker) FileuploadFlyoverAerialServiceMod {
return FileuploadFlyoverAerialServiceModFunc(func(_ context.Context, o *FileuploadFlyoverAerialServiceTemplate) {
o.H3cell = func() null.Val[string] {
if f == nil {
f = &defaultFaker
}
val := random_string(f)
return null.From(val)
}
})
}
// Generates a random value for the column using the given faker
// if faker is nil, a default faker is used
// The generated value is never null
func (m fileuploadFlyoverAerialServiceMods) RandomH3cellNotNull(f *faker.Faker) FileuploadFlyoverAerialServiceMod {
return FileuploadFlyoverAerialServiceModFunc(func(_ context.Context, o *FileuploadFlyoverAerialServiceTemplate) {
o.H3cell = func() null.Val[string] {
if f == nil {
f = &defaultFaker
}
val := random_string(f)
return null.From(val)
}
})
}
// Set the model columns to this value
func (m fileuploadFlyoverAerialServiceMods) ID(val int32) FileuploadFlyoverAerialServiceMod {
return FileuploadFlyoverAerialServiceModFunc(func(_ context.Context, o *FileuploadFlyoverAerialServiceTemplate) {
o.ID = func() int32 { return val }
})
}
// Set the Column from the function
func (m fileuploadFlyoverAerialServiceMods) IDFunc(f func() int32) FileuploadFlyoverAerialServiceMod {
return FileuploadFlyoverAerialServiceModFunc(func(_ context.Context, o *FileuploadFlyoverAerialServiceTemplate) {
o.ID = f
})
}
// Clear any values for the column
func (m fileuploadFlyoverAerialServiceMods) UnsetID() FileuploadFlyoverAerialServiceMod {
return FileuploadFlyoverAerialServiceModFunc(func(_ context.Context, o *FileuploadFlyoverAerialServiceTemplate) {
o.ID = nil
})
}
// Generates a random value for the column using the given faker
// if faker is nil, a default faker is used
func (m fileuploadFlyoverAerialServiceMods) RandomID(f *faker.Faker) FileuploadFlyoverAerialServiceMod {
return FileuploadFlyoverAerialServiceModFunc(func(_ context.Context, o *FileuploadFlyoverAerialServiceTemplate) {
o.ID = func() int32 {
return random_int32(f)
}
})
}
// Set the model columns to this value
func (m fileuploadFlyoverAerialServiceMods) OrganizationID(val int32) FileuploadFlyoverAerialServiceMod {
return FileuploadFlyoverAerialServiceModFunc(func(_ context.Context, o *FileuploadFlyoverAerialServiceTemplate) {
o.OrganizationID = func() int32 { return val }
})
}
// Set the Column from the function
func (m fileuploadFlyoverAerialServiceMods) OrganizationIDFunc(f func() int32) FileuploadFlyoverAerialServiceMod {
return FileuploadFlyoverAerialServiceModFunc(func(_ context.Context, o *FileuploadFlyoverAerialServiceTemplate) {
o.OrganizationID = f
})
}
// Clear any values for the column
func (m fileuploadFlyoverAerialServiceMods) UnsetOrganizationID() FileuploadFlyoverAerialServiceMod {
return FileuploadFlyoverAerialServiceModFunc(func(_ context.Context, o *FileuploadFlyoverAerialServiceTemplate) {
o.OrganizationID = nil
})
}
// Generates a random value for the column using the given faker
// if faker is nil, a default faker is used
func (m fileuploadFlyoverAerialServiceMods) RandomOrganizationID(f *faker.Faker) FileuploadFlyoverAerialServiceMod {
return FileuploadFlyoverAerialServiceModFunc(func(_ context.Context, o *FileuploadFlyoverAerialServiceTemplate) {
o.OrganizationID = func() int32 {
return random_int32(f)
}
})
}
func (m fileuploadFlyoverAerialServiceMods) WithParentsCascading() FileuploadFlyoverAerialServiceMod {
return FileuploadFlyoverAerialServiceModFunc(func(ctx context.Context, o *FileuploadFlyoverAerialServiceTemplate) {
if isDone, _ := fileuploadFlyoverAerialServiceWithParentsCascadingCtx.Value(ctx); isDone {
return
}
ctx = fileuploadFlyoverAerialServiceWithParentsCascadingCtx.WithValue(ctx, true)
{
related := o.f.NewUserWithContext(ctx, UserMods.WithParentsCascading())
m.WithCreatorUser(related).Apply(ctx, o)
}
{
related := o.f.NewFileuploadCSVWithContext(ctx, FileuploadCSVMods.WithParentsCascading())
m.WithCSVFileCSV(related).Apply(ctx, o)
}
{
related := o.f.NewOrganizationWithContext(ctx, OrganizationMods.WithParentsCascading())
m.WithOrganization(related).Apply(ctx, o)
}
})
}
func (m fileuploadFlyoverAerialServiceMods) WithCreatorUser(rel *UserTemplate) FileuploadFlyoverAerialServiceMod {
return FileuploadFlyoverAerialServiceModFunc(func(ctx context.Context, o *FileuploadFlyoverAerialServiceTemplate) {
o.r.CreatorUser = &fileuploadFlyoverAerialServiceRCreatorUserR{
o: rel,
}
})
}
func (m fileuploadFlyoverAerialServiceMods) WithNewCreatorUser(mods ...UserMod) FileuploadFlyoverAerialServiceMod {
return FileuploadFlyoverAerialServiceModFunc(func(ctx context.Context, o *FileuploadFlyoverAerialServiceTemplate) {
related := o.f.NewUserWithContext(ctx, mods...)
m.WithCreatorUser(related).Apply(ctx, o)
})
}
func (m fileuploadFlyoverAerialServiceMods) WithExistingCreatorUser(em *models.User) FileuploadFlyoverAerialServiceMod {
return FileuploadFlyoverAerialServiceModFunc(func(ctx context.Context, o *FileuploadFlyoverAerialServiceTemplate) {
o.r.CreatorUser = &fileuploadFlyoverAerialServiceRCreatorUserR{
o: o.f.FromExistingUser(em),
}
})
}
func (m fileuploadFlyoverAerialServiceMods) WithoutCreatorUser() FileuploadFlyoverAerialServiceMod {
return FileuploadFlyoverAerialServiceModFunc(func(ctx context.Context, o *FileuploadFlyoverAerialServiceTemplate) {
o.r.CreatorUser = nil
})
}
func (m fileuploadFlyoverAerialServiceMods) WithCSVFileCSV(rel *FileuploadCSVTemplate) FileuploadFlyoverAerialServiceMod {
return FileuploadFlyoverAerialServiceModFunc(func(ctx context.Context, o *FileuploadFlyoverAerialServiceTemplate) {
o.r.CSVFileCSV = &fileuploadFlyoverAerialServiceRCSVFileCSVR{
o: rel,
}
})
}
func (m fileuploadFlyoverAerialServiceMods) WithNewCSVFileCSV(mods ...FileuploadCSVMod) FileuploadFlyoverAerialServiceMod {
return FileuploadFlyoverAerialServiceModFunc(func(ctx context.Context, o *FileuploadFlyoverAerialServiceTemplate) {
related := o.f.NewFileuploadCSVWithContext(ctx, mods...)
m.WithCSVFileCSV(related).Apply(ctx, o)
})
}
func (m fileuploadFlyoverAerialServiceMods) WithExistingCSVFileCSV(em *models.FileuploadCSV) FileuploadFlyoverAerialServiceMod {
return FileuploadFlyoverAerialServiceModFunc(func(ctx context.Context, o *FileuploadFlyoverAerialServiceTemplate) {
o.r.CSVFileCSV = &fileuploadFlyoverAerialServiceRCSVFileCSVR{
o: o.f.FromExistingFileuploadCSV(em),
}
})
}
func (m fileuploadFlyoverAerialServiceMods) WithoutCSVFileCSV() FileuploadFlyoverAerialServiceMod {
return FileuploadFlyoverAerialServiceModFunc(func(ctx context.Context, o *FileuploadFlyoverAerialServiceTemplate) {
o.r.CSVFileCSV = nil
})
}
func (m fileuploadFlyoverAerialServiceMods) WithOrganization(rel *OrganizationTemplate) FileuploadFlyoverAerialServiceMod {
return FileuploadFlyoverAerialServiceModFunc(func(ctx context.Context, o *FileuploadFlyoverAerialServiceTemplate) {
o.r.Organization = &fileuploadFlyoverAerialServiceROrganizationR{
o: rel,
}
})
}
func (m fileuploadFlyoverAerialServiceMods) WithNewOrganization(mods ...OrganizationMod) FileuploadFlyoverAerialServiceMod {
return FileuploadFlyoverAerialServiceModFunc(func(ctx context.Context, o *FileuploadFlyoverAerialServiceTemplate) {
related := o.f.NewOrganizationWithContext(ctx, mods...)
m.WithOrganization(related).Apply(ctx, o)
})
}
func (m fileuploadFlyoverAerialServiceMods) WithExistingOrganization(em *models.Organization) FileuploadFlyoverAerialServiceMod {
return FileuploadFlyoverAerialServiceModFunc(func(ctx context.Context, o *FileuploadFlyoverAerialServiceTemplate) {
o.r.Organization = &fileuploadFlyoverAerialServiceROrganizationR{
o: o.f.FromExistingOrganization(em),
}
})
}
func (m fileuploadFlyoverAerialServiceMods) WithoutOrganization() FileuploadFlyoverAerialServiceMod {
return FileuploadFlyoverAerialServiceModFunc(func(ctx context.Context, o *FileuploadFlyoverAerialServiceTemplate) {
o.r.Organization = nil
})
}

View file

@ -112,6 +112,7 @@ type organizationR struct {
Zones2s []*organizationRZones2sR
FieldseekerSyncs []*organizationRFieldseekerSyncsR
Files []*organizationRFilesR
FlyoverAerialServices []*organizationRFlyoverAerialServicesR
Pools []*organizationRPoolsR
H3Aggregations []*organizationRH3AggregationsR
NoteAudios []*organizationRNoteAudiosR
@ -260,6 +261,10 @@ type organizationRFilesR struct {
number int
o *FileuploadFileTemplate
}
type organizationRFlyoverAerialServicesR struct {
number int
o *FileuploadFlyoverAerialServiceTemplate
}
type organizationRPoolsR struct {
number int
o *FileuploadPoolTemplate
@ -749,6 +754,19 @@ func (t OrganizationTemplate) setModelRels(o *models.Organization) {
o.R.Files = rel
}
if t.r.FlyoverAerialServices != nil {
rel := models.FileuploadFlyoverAerialServiceSlice{}
for _, r := range t.r.FlyoverAerialServices {
related := r.o.BuildMany(r.number)
for _, rel := range related {
rel.OrganizationID = o.ID // h2
rel.R.Organization = o
}
rel = append(rel, related...)
}
o.R.FlyoverAerialServices = rel
}
if t.r.Pools != nil {
rel := models.FileuploadPoolSlice{}
for _, r := range t.r.Pools {
@ -1791,6 +1809,26 @@ func (o *OrganizationTemplate) insertOptRels(ctx context.Context, exec bob.Execu
}
}
isFlyoverAerialServicesDone, _ := organizationRelFlyoverAerialServicesCtx.Value(ctx)
if !isFlyoverAerialServicesDone && o.r.FlyoverAerialServices != nil {
ctx = organizationRelFlyoverAerialServicesCtx.WithValue(ctx, true)
for _, r := range o.r.FlyoverAerialServices {
if r.o.alreadyPersisted {
m.R.FlyoverAerialServices = append(m.R.FlyoverAerialServices, r.o.Build())
} else {
rel34, err := r.o.CreateMany(ctx, exec, r.number)
if err != nil {
return err
}
err = m.AttachFlyoverAerialServices(ctx, exec, rel34...)
if err != nil {
return err
}
}
}
}
isPoolsDone, _ := organizationRelPoolsCtx.Value(ctx)
if !isPoolsDone && o.r.Pools != nil {
ctx = organizationRelPoolsCtx.WithValue(ctx, true)
@ -1798,12 +1836,12 @@ func (o *OrganizationTemplate) insertOptRels(ctx context.Context, exec bob.Execu
if r.o.alreadyPersisted {
m.R.Pools = append(m.R.Pools, r.o.Build())
} else {
rel34, err := r.o.CreateMany(ctx, exec, r.number)
rel35, err := r.o.CreateMany(ctx, exec, r.number)
if err != nil {
return err
}
err = m.AttachPools(ctx, exec, rel34...)
err = m.AttachPools(ctx, exec, rel35...)
if err != nil {
return err
}
@ -1818,12 +1856,12 @@ func (o *OrganizationTemplate) insertOptRels(ctx context.Context, exec bob.Execu
if r.o.alreadyPersisted {
m.R.H3Aggregations = append(m.R.H3Aggregations, r.o.Build())
} else {
rel35, err := r.o.CreateMany(ctx, exec, r.number)
rel36, err := r.o.CreateMany(ctx, exec, r.number)
if err != nil {
return err
}
err = m.AttachH3Aggregations(ctx, exec, rel35...)
err = m.AttachH3Aggregations(ctx, exec, rel36...)
if err != nil {
return err
}
@ -1838,12 +1876,12 @@ func (o *OrganizationTemplate) insertOptRels(ctx context.Context, exec bob.Execu
if r.o.alreadyPersisted {
m.R.NoteAudios = append(m.R.NoteAudios, r.o.Build())
} else {
rel36, err := r.o.CreateMany(ctx, exec, r.number)
rel37, err := r.o.CreateMany(ctx, exec, r.number)
if err != nil {
return err
}
err = m.AttachNoteAudios(ctx, exec, rel36...)
err = m.AttachNoteAudios(ctx, exec, rel37...)
if err != nil {
return err
}
@ -1858,12 +1896,12 @@ func (o *OrganizationTemplate) insertOptRels(ctx context.Context, exec bob.Execu
if r.o.alreadyPersisted {
m.R.NoteImages = append(m.R.NoteImages, r.o.Build())
} else {
rel37, err := r.o.CreateMany(ctx, exec, r.number)
rel38, err := r.o.CreateMany(ctx, exec, r.number)
if err != nil {
return err
}
err = m.AttachNoteImages(ctx, exec, rel37...)
err = m.AttachNoteImages(ctx, exec, rel38...)
if err != nil {
return err
}
@ -1877,12 +1915,12 @@ func (o *OrganizationTemplate) insertOptRels(ctx context.Context, exec bob.Execu
if o.r.ArcgisAccountAccount.o.alreadyPersisted {
m.R.ArcgisAccountAccount = o.r.ArcgisAccountAccount.o.Build()
} else {
var rel38 *models.ArcgisAccount
rel38, err = o.r.ArcgisAccountAccount.o.Create(ctx, exec)
var rel39 *models.ArcgisAccount
rel39, err = o.r.ArcgisAccountAccount.o.Create(ctx, exec)
if err != nil {
return err
}
err = m.AttachArcgisAccountAccount(ctx, exec, rel38)
err = m.AttachArcgisAccountAccount(ctx, exec, rel39)
if err != nil {
return err
}
@ -1896,12 +1934,12 @@ func (o *OrganizationTemplate) insertOptRels(ctx context.Context, exec bob.Execu
if o.r.FieldseekerServiceFeatureItemServiceFeature.o.alreadyPersisted {
m.R.FieldseekerServiceFeatureItemServiceFeature = o.r.FieldseekerServiceFeatureItemServiceFeature.o.Build()
} else {
var rel39 *models.ArcgisServiceFeature
rel39, err = o.r.FieldseekerServiceFeatureItemServiceFeature.o.Create(ctx, exec)
var rel40 *models.ArcgisServiceFeature
rel40, err = o.r.FieldseekerServiceFeatureItemServiceFeature.o.Create(ctx, exec)
if err != nil {
return err
}
err = m.AttachFieldseekerServiceFeatureItemServiceFeature(ctx, exec, rel39)
err = m.AttachFieldseekerServiceFeatureItemServiceFeature(ctx, exec, rel40)
if err != nil {
return err
}
@ -1916,12 +1954,12 @@ func (o *OrganizationTemplate) insertOptRels(ctx context.Context, exec bob.Execu
if r.o.alreadyPersisted {
m.R.Nuisances = append(m.R.Nuisances, r.o.Build())
} else {
rel40, err := r.o.CreateMany(ctx, exec, r.number)
rel41, err := r.o.CreateMany(ctx, exec, r.number)
if err != nil {
return err
}
err = m.AttachNuisances(ctx, exec, rel40...)
err = m.AttachNuisances(ctx, exec, rel41...)
if err != nil {
return err
}
@ -1936,12 +1974,12 @@ func (o *OrganizationTemplate) insertOptRels(ctx context.Context, exec bob.Execu
if r.o.alreadyPersisted {
m.R.PublicreportPool = append(m.R.PublicreportPool, r.o.Build())
} else {
rel41, err := r.o.CreateMany(ctx, exec, r.number)
rel42, err := r.o.CreateMany(ctx, exec, r.number)
if err != nil {
return err
}
err = m.AttachPublicreportPool(ctx, exec, rel41...)
err = m.AttachPublicreportPool(ctx, exec, rel42...)
if err != nil {
return err
}
@ -1956,12 +1994,12 @@ func (o *OrganizationTemplate) insertOptRels(ctx context.Context, exec bob.Execu
if r.o.alreadyPersisted {
m.R.Quicks = append(m.R.Quicks, r.o.Build())
} else {
rel42, err := r.o.CreateMany(ctx, exec, r.number)
rel43, err := r.o.CreateMany(ctx, exec, r.number)
if err != nil {
return err
}
err = m.AttachQuicks(ctx, exec, rel42...)
err = m.AttachQuicks(ctx, exec, rel43...)
if err != nil {
return err
}
@ -1976,12 +2014,12 @@ func (o *OrganizationTemplate) insertOptRels(ctx context.Context, exec bob.Execu
if r.o.alreadyPersisted {
m.R.User = append(m.R.User, r.o.Build())
} else {
rel43, err := r.o.CreateMany(ctx, exec, r.number)
rel44, err := r.o.CreateMany(ctx, exec, r.number)
if err != nil {
return err
}
err = m.AttachUser(ctx, exec, rel43...)
err = m.AttachUser(ctx, exec, rel44...)
if err != nil {
return err
}
@ -5479,6 +5517,54 @@ func (m organizationMods) WithoutFiles() OrganizationMod {
})
}
func (m organizationMods) WithFlyoverAerialServices(number int, related *FileuploadFlyoverAerialServiceTemplate) OrganizationMod {
return OrganizationModFunc(func(ctx context.Context, o *OrganizationTemplate) {
o.r.FlyoverAerialServices = []*organizationRFlyoverAerialServicesR{{
number: number,
o: related,
}}
})
}
func (m organizationMods) WithNewFlyoverAerialServices(number int, mods ...FileuploadFlyoverAerialServiceMod) OrganizationMod {
return OrganizationModFunc(func(ctx context.Context, o *OrganizationTemplate) {
related := o.f.NewFileuploadFlyoverAerialServiceWithContext(ctx, mods...)
m.WithFlyoverAerialServices(number, related).Apply(ctx, o)
})
}
func (m organizationMods) AddFlyoverAerialServices(number int, related *FileuploadFlyoverAerialServiceTemplate) OrganizationMod {
return OrganizationModFunc(func(ctx context.Context, o *OrganizationTemplate) {
o.r.FlyoverAerialServices = append(o.r.FlyoverAerialServices, &organizationRFlyoverAerialServicesR{
number: number,
o: related,
})
})
}
func (m organizationMods) AddNewFlyoverAerialServices(number int, mods ...FileuploadFlyoverAerialServiceMod) OrganizationMod {
return OrganizationModFunc(func(ctx context.Context, o *OrganizationTemplate) {
related := o.f.NewFileuploadFlyoverAerialServiceWithContext(ctx, mods...)
m.AddFlyoverAerialServices(number, related).Apply(ctx, o)
})
}
func (m organizationMods) AddExistingFlyoverAerialServices(existingModels ...*models.FileuploadFlyoverAerialService) OrganizationMod {
return OrganizationModFunc(func(ctx context.Context, o *OrganizationTemplate) {
for _, em := range existingModels {
o.r.FlyoverAerialServices = append(o.r.FlyoverAerialServices, &organizationRFlyoverAerialServicesR{
o: o.f.FromExistingFileuploadFlyoverAerialService(em),
})
}
})
}
func (m organizationMods) WithoutFlyoverAerialServices() OrganizationMod {
return OrganizationModFunc(func(ctx context.Context, o *OrganizationTemplate) {
o.r.FlyoverAerialServices = nil
})
}
func (m organizationMods) WithPools(number int, related *FileuploadPoolTemplate) OrganizationMod {
return OrganizationModFunc(func(ctx context.Context, o *OrganizationTemplate) {
o.r.Pools = []*organizationRPoolsR{{

View file

@ -63,6 +63,7 @@ type userR struct {
PublicUserUser []*userRPublicUserUserR
CreatorComplianceReportRequests []*userRCreatorComplianceReportRequestsR
CreatorFiles []*userRCreatorFilesR
CreatorFlyoverAerialServices []*userRCreatorFlyoverAerialServicesR
FileuploadPool []*userRFileuploadPoolR
CreatorNoteAudios []*userRCreatorNoteAudiosR
DeletorNoteAudios []*userRDeletorNoteAudiosR
@ -91,6 +92,10 @@ type userRCreatorFilesR struct {
number int
o *FileuploadFileTemplate
}
type userRCreatorFlyoverAerialServicesR struct {
number int
o *FileuploadFlyoverAerialServiceTemplate
}
type userRFileuploadPoolR struct {
number int
o *FileuploadPoolTemplate
@ -193,6 +198,19 @@ func (t UserTemplate) setModelRels(o *models.User) {
o.R.CreatorFiles = rel
}
if t.r.CreatorFlyoverAerialServices != nil {
rel := models.FileuploadFlyoverAerialServiceSlice{}
for _, r := range t.r.CreatorFlyoverAerialServices {
related := r.o.BuildMany(r.number)
for _, rel := range related {
rel.CreatorID = o.ID // h2
rel.R.CreatorUser = o
}
rel = append(rel, related...)
}
o.R.CreatorFlyoverAerialServices = rel
}
if t.r.FileuploadPool != nil {
rel := models.FileuploadPoolSlice{}
for _, r := range t.r.FileuploadPool {
@ -568,6 +586,26 @@ func (o *UserTemplate) insertOptRels(ctx context.Context, exec bob.Executor, m *
}
}
isCreatorFlyoverAerialServicesDone, _ := userRelCreatorFlyoverAerialServicesCtx.Value(ctx)
if !isCreatorFlyoverAerialServicesDone && o.r.CreatorFlyoverAerialServices != nil {
ctx = userRelCreatorFlyoverAerialServicesCtx.WithValue(ctx, true)
for _, r := range o.r.CreatorFlyoverAerialServices {
if r.o.alreadyPersisted {
m.R.CreatorFlyoverAerialServices = append(m.R.CreatorFlyoverAerialServices, r.o.Build())
} else {
rel4, err := r.o.CreateMany(ctx, exec, r.number)
if err != nil {
return err
}
err = m.AttachCreatorFlyoverAerialServices(ctx, exec, rel4...)
if err != nil {
return err
}
}
}
}
isFileuploadPoolDone, _ := userRelFileuploadPoolCtx.Value(ctx)
if !isFileuploadPoolDone && o.r.FileuploadPool != nil {
ctx = userRelFileuploadPoolCtx.WithValue(ctx, true)
@ -575,12 +613,12 @@ func (o *UserTemplate) insertOptRels(ctx context.Context, exec bob.Executor, m *
if r.o.alreadyPersisted {
m.R.FileuploadPool = append(m.R.FileuploadPool, r.o.Build())
} else {
rel4, err := r.o.CreateMany(ctx, exec, r.number)
rel5, err := r.o.CreateMany(ctx, exec, r.number)
if err != nil {
return err
}
err = m.AttachFileuploadPool(ctx, exec, rel4...)
err = m.AttachFileuploadPool(ctx, exec, rel5...)
if err != nil {
return err
}
@ -595,12 +633,12 @@ func (o *UserTemplate) insertOptRels(ctx context.Context, exec bob.Executor, m *
if r.o.alreadyPersisted {
m.R.CreatorNoteAudios = append(m.R.CreatorNoteAudios, r.o.Build())
} else {
rel5, err := r.o.CreateMany(ctx, exec, r.number)
rel6, err := r.o.CreateMany(ctx, exec, r.number)
if err != nil {
return err
}
err = m.AttachCreatorNoteAudios(ctx, exec, rel5...)
err = m.AttachCreatorNoteAudios(ctx, exec, rel6...)
if err != nil {
return err
}
@ -615,12 +653,12 @@ func (o *UserTemplate) insertOptRels(ctx context.Context, exec bob.Executor, m *
if r.o.alreadyPersisted {
m.R.DeletorNoteAudios = append(m.R.DeletorNoteAudios, r.o.Build())
} else {
rel6, err := r.o.CreateMany(ctx, exec, r.number)
rel7, err := r.o.CreateMany(ctx, exec, r.number)
if err != nil {
return err
}
err = m.AttachDeletorNoteAudios(ctx, exec, rel6...)
err = m.AttachDeletorNoteAudios(ctx, exec, rel7...)
if err != nil {
return err
}
@ -635,12 +673,12 @@ func (o *UserTemplate) insertOptRels(ctx context.Context, exec bob.Executor, m *
if r.o.alreadyPersisted {
m.R.CreatorNoteImages = append(m.R.CreatorNoteImages, r.o.Build())
} else {
rel7, err := r.o.CreateMany(ctx, exec, r.number)
rel8, err := r.o.CreateMany(ctx, exec, r.number)
if err != nil {
return err
}
err = m.AttachCreatorNoteImages(ctx, exec, rel7...)
err = m.AttachCreatorNoteImages(ctx, exec, rel8...)
if err != nil {
return err
}
@ -655,12 +693,12 @@ func (o *UserTemplate) insertOptRels(ctx context.Context, exec bob.Executor, m *
if r.o.alreadyPersisted {
m.R.DeletorNoteImages = append(m.R.DeletorNoteImages, r.o.Build())
} else {
rel8, err := r.o.CreateMany(ctx, exec, r.number)
rel9, err := r.o.CreateMany(ctx, exec, r.number)
if err != nil {
return err
}
err = m.AttachDeletorNoteImages(ctx, exec, rel8...)
err = m.AttachDeletorNoteImages(ctx, exec, rel9...)
if err != nil {
return err
}
@ -675,12 +713,12 @@ func (o *UserTemplate) insertOptRels(ctx context.Context, exec bob.Executor, m *
if r.o.alreadyPersisted {
m.R.UserNotifications = append(m.R.UserNotifications, r.o.Build())
} else {
rel9, err := r.o.CreateMany(ctx, exec, r.number)
rel10, err := r.o.CreateMany(ctx, exec, r.number)
if err != nil {
return err
}
err = m.AttachUserNotifications(ctx, exec, rel9...)
err = m.AttachUserNotifications(ctx, exec, rel10...)
if err != nil {
return err
}
@ -695,12 +733,12 @@ func (o *UserTemplate) insertOptRels(ctx context.Context, exec bob.Executor, m *
if r.o.alreadyPersisted {
m.R.CreatorPools = append(m.R.CreatorPools, r.o.Build())
} else {
rel10, err := r.o.CreateMany(ctx, exec, r.number)
rel11, err := r.o.CreateMany(ctx, exec, r.number)
if err != nil {
return err
}
err = m.AttachCreatorPools(ctx, exec, rel10...)
err = m.AttachCreatorPools(ctx, exec, rel11...)
if err != nil {
return err
}
@ -715,12 +753,12 @@ func (o *UserTemplate) insertOptRels(ctx context.Context, exec bob.Executor, m *
if r.o.alreadyPersisted {
m.R.CreatorResidents = append(m.R.CreatorResidents, r.o.Build())
} else {
rel11, err := r.o.CreateMany(ctx, exec, r.number)
rel12, err := r.o.CreateMany(ctx, exec, r.number)
if err != nil {
return err
}
err = m.AttachCreatorResidents(ctx, exec, rel11...)
err = m.AttachCreatorResidents(ctx, exec, rel12...)
if err != nil {
return err
}
@ -735,12 +773,12 @@ func (o *UserTemplate) insertOptRels(ctx context.Context, exec bob.Executor, m *
if r.o.alreadyPersisted {
m.R.CreatorSites = append(m.R.CreatorSites, r.o.Build())
} else {
rel12, err := r.o.CreateMany(ctx, exec, r.number)
rel13, err := r.o.CreateMany(ctx, exec, r.number)
if err != nil {
return err
}
err = m.AttachCreatorSites(ctx, exec, rel12...)
err = m.AttachCreatorSites(ctx, exec, rel13...)
if err != nil {
return err
}
@ -762,25 +800,25 @@ func (o *UserTemplate) Create(ctx context.Context, exec bob.Executor) (*models.U
UserMods.WithNewOrganization().Apply(ctx, o)
}
var rel13 *models.Organization
var rel14 *models.Organization
if o.r.Organization.o.alreadyPersisted {
rel13 = o.r.Organization.o.Build()
rel14 = o.r.Organization.o.Build()
} else {
rel13, err = o.r.Organization.o.Create(ctx, exec)
rel14, err = o.r.Organization.o.Create(ctx, exec)
if err != nil {
return nil, err
}
}
opt.OrganizationID = omit.From(rel13.ID)
opt.OrganizationID = omit.From(rel14.ID)
m, err := models.Users.Insert(opt).One(ctx, exec)
if err != nil {
return nil, err
}
m.R.Organization = rel13
m.R.Organization = rel14
if err := o.insertOptRels(ctx, exec, m); err != nil {
return nil, err
@ -1646,6 +1684,54 @@ func (m userMods) WithoutCreatorFiles() UserMod {
})
}
func (m userMods) WithCreatorFlyoverAerialServices(number int, related *FileuploadFlyoverAerialServiceTemplate) UserMod {
return UserModFunc(func(ctx context.Context, o *UserTemplate) {
o.r.CreatorFlyoverAerialServices = []*userRCreatorFlyoverAerialServicesR{{
number: number,
o: related,
}}
})
}
func (m userMods) WithNewCreatorFlyoverAerialServices(number int, mods ...FileuploadFlyoverAerialServiceMod) UserMod {
return UserModFunc(func(ctx context.Context, o *UserTemplate) {
related := o.f.NewFileuploadFlyoverAerialServiceWithContext(ctx, mods...)
m.WithCreatorFlyoverAerialServices(number, related).Apply(ctx, o)
})
}
func (m userMods) AddCreatorFlyoverAerialServices(number int, related *FileuploadFlyoverAerialServiceTemplate) UserMod {
return UserModFunc(func(ctx context.Context, o *UserTemplate) {
o.r.CreatorFlyoverAerialServices = append(o.r.CreatorFlyoverAerialServices, &userRCreatorFlyoverAerialServicesR{
number: number,
o: related,
})
})
}
func (m userMods) AddNewCreatorFlyoverAerialServices(number int, mods ...FileuploadFlyoverAerialServiceMod) UserMod {
return UserModFunc(func(ctx context.Context, o *UserTemplate) {
related := o.f.NewFileuploadFlyoverAerialServiceWithContext(ctx, mods...)
m.AddCreatorFlyoverAerialServices(number, related).Apply(ctx, o)
})
}
func (m userMods) AddExistingCreatorFlyoverAerialServices(existingModels ...*models.FileuploadFlyoverAerialService) UserMod {
return UserModFunc(func(ctx context.Context, o *UserTemplate) {
for _, em := range existingModels {
o.r.CreatorFlyoverAerialServices = append(o.r.CreatorFlyoverAerialServices, &userRCreatorFlyoverAerialServicesR{
o: o.f.FromExistingFileuploadFlyoverAerialService(em),
})
}
})
}
func (m userMods) WithoutCreatorFlyoverAerialServices() UserMod {
return UserModFunc(func(ctx context.Context, o *UserTemplate) {
o.r.CreatorFlyoverAerialServices = nil
})
}
func (m userMods) WithFileuploadPool(number int, related *FileuploadPoolTemplate) UserMod {
return UserModFunc(func(ctx context.Context, o *UserTemplate) {
o.r.FileuploadPool = []*userRFileuploadPoolR{{

View file

@ -0,0 +1,18 @@
-- +goose Up
ALTER TYPE fileupload.CSVType ADD VALUE 'Flyover' AFTER 'PoolList';
CREATE TABLE fileupload.flyover_aerial_service (
committed BOOLEAN NOT NULL, -- Whether or not its just proposed before a CSV file is committed
condition fileupload.PoolConditionType NOT NULL,
created TIMESTAMP WITHOUT TIME ZONE NOT NULL,
creator_id INTEGER REFERENCES user_(id) NOT NULL,
csv_file INTEGER REFERENCES fileupload.csv(file_id) NOT NULL,
deleted TIMESTAMP WITHOUT TIME ZONE,
geom geometry(Point, 4326),
h3cell h3index,
id SERIAL,
organization_id INTEGER REFERENCES organization(id) NOT NULL,
PRIMARY KEY (id)
);
-- +goose Down
DROP TABLE fileupload.flyover_aerial_services;
ALTER TYPE fileupload.CSVType DROP VALUE 'Flyover';

View file

@ -0,0 +1,3 @@
-- +goose Up
CREATE INDEX idx_address_geom ON address USING GIST (geom);
CREATE INDEX idx_parcel_geometry ON parcel USING GIST (geometry);

View file

@ -0,0 +1,16 @@
-- +goose Up
-- +goose StatementBegin
CREATE OR REPLACE FUNCTION generate_alphanumeric_code(code_length INTEGER DEFAULT 8)
RETURNS TEXT AS $$
DECLARE
chars TEXT := 'ABCDEFGHJKMNPQRSTUVWXYZ23456789';
result TEXT := '';
i INTEGER;
BEGIN
FOR i IN 1..code_length LOOP
result := result || substr(chars, floor(random() * length(chars) + 1)::INTEGER, 1);
END LOOP;
RETURN result;
END;
$$ LANGUAGE plpgsql;
-- +goose StatementEnd

View file

@ -84,6 +84,7 @@ type joins[Q dialect.Joinable] struct {
FileuploadErrorCSVS joinSet[fileuploadErrorCSVJoins[Q]]
FileuploadErrorFiles joinSet[fileuploadErrorFileJoins[Q]]
FileuploadFiles joinSet[fileuploadFileJoins[Q]]
FileuploadFlyoverAerialServices joinSet[fileuploadFlyoverAerialServiceJoins[Q]]
FileuploadPools joinSet[fileuploadPoolJoins[Q]]
H3Aggregations joinSet[h3AggregationJoins[Q]]
NoteAudios joinSet[noteAudioJoins[Q]]
@ -177,6 +178,7 @@ func getJoins[Q dialect.Joinable]() joins[Q] {
FileuploadErrorCSVS: buildJoinSet[fileuploadErrorCSVJoins[Q]](FileuploadErrorCSVS.Columns, buildFileuploadErrorCSVJoins),
FileuploadErrorFiles: buildJoinSet[fileuploadErrorFileJoins[Q]](FileuploadErrorFiles.Columns, buildFileuploadErrorFileJoins),
FileuploadFiles: buildJoinSet[fileuploadFileJoins[Q]](FileuploadFiles.Columns, buildFileuploadFileJoins),
FileuploadFlyoverAerialServices: buildJoinSet[fileuploadFlyoverAerialServiceJoins[Q]](FileuploadFlyoverAerialServices.Columns, buildFileuploadFlyoverAerialServiceJoins),
FileuploadPools: buildJoinSet[fileuploadPoolJoins[Q]](FileuploadPools.Columns, buildFileuploadPoolJoins),
H3Aggregations: buildJoinSet[h3AggregationJoins[Q]](H3Aggregations.Columns, buildH3AggregationJoins),
NoteAudios: buildJoinSet[noteAudioJoins[Q]](NoteAudios.Columns, buildNoteAudioJoins),

View file

@ -69,6 +69,7 @@ type preloaders struct {
FileuploadErrorCSV fileuploadErrorCSVPreloader
FileuploadErrorFile fileuploadErrorFilePreloader
FileuploadFile fileuploadFilePreloader
FileuploadFlyoverAerialService fileuploadFlyoverAerialServicePreloader
FileuploadPool fileuploadPoolPreloader
H3Aggregation h3AggregationPreloader
NoteAudio noteAudioPreloader
@ -154,6 +155,7 @@ func getPreloaders() preloaders {
FileuploadErrorCSV: buildFileuploadErrorCSVPreloader(),
FileuploadErrorFile: buildFileuploadErrorFilePreloader(),
FileuploadFile: buildFileuploadFilePreloader(),
FileuploadFlyoverAerialService: buildFileuploadFlyoverAerialServicePreloader(),
FileuploadPool: buildFileuploadPoolPreloader(),
H3Aggregation: buildH3AggregationPreloader(),
NoteAudio: buildNoteAudioPreloader(),
@ -245,6 +247,7 @@ type thenLoaders[Q orm.Loadable] struct {
FileuploadErrorCSV fileuploadErrorCSVThenLoader[Q]
FileuploadErrorFile fileuploadErrorFileThenLoader[Q]
FileuploadFile fileuploadFileThenLoader[Q]
FileuploadFlyoverAerialService fileuploadFlyoverAerialServiceThenLoader[Q]
FileuploadPool fileuploadPoolThenLoader[Q]
H3Aggregation h3AggregationThenLoader[Q]
NoteAudio noteAudioThenLoader[Q]
@ -330,6 +333,7 @@ func getThenLoaders[Q orm.Loadable]() thenLoaders[Q] {
FileuploadErrorCSV: buildFileuploadErrorCSVThenLoader[Q](),
FileuploadErrorFile: buildFileuploadErrorFileThenLoader[Q](),
FileuploadFile: buildFileuploadFileThenLoader[Q](),
FileuploadFlyoverAerialService: buildFileuploadFlyoverAerialServiceThenLoader[Q](),
FileuploadPool: buildFileuploadPoolThenLoader[Q](),
H3Aggregation: buildH3AggregationThenLoader[Q](),
NoteAudio: buildNoteAudioThenLoader[Q](),

View file

@ -70,6 +70,7 @@ func Where[Q psql.Filterable]() struct {
FileuploadErrorCSVS fileuploadErrorCSVWhere[Q]
FileuploadErrorFiles fileuploadErrorFileWhere[Q]
FileuploadFiles fileuploadFileWhere[Q]
FileuploadFlyoverAerialServices fileuploadFlyoverAerialServiceWhere[Q]
FileuploadPools fileuploadPoolWhere[Q]
GeographyColumns geographyColumnWhere[Q]
GeometryColumns geometryColumnWhere[Q]
@ -162,6 +163,7 @@ func Where[Q psql.Filterable]() struct {
FileuploadErrorCSVS fileuploadErrorCSVWhere[Q]
FileuploadErrorFiles fileuploadErrorFileWhere[Q]
FileuploadFiles fileuploadFileWhere[Q]
FileuploadFlyoverAerialServices fileuploadFlyoverAerialServiceWhere[Q]
FileuploadPools fileuploadPoolWhere[Q]
GeographyColumns geographyColumnWhere[Q]
GeometryColumns geometryColumnWhere[Q]
@ -253,6 +255,7 @@ func Where[Q psql.Filterable]() struct {
FileuploadErrorCSVS: buildFileuploadErrorCSVWhere[Q](FileuploadErrorCSVS.Columns),
FileuploadErrorFiles: buildFileuploadErrorFileWhere[Q](FileuploadErrorFiles.Columns),
FileuploadFiles: buildFileuploadFileWhere[Q](FileuploadFiles.Columns),
FileuploadFlyoverAerialServices: buildFileuploadFlyoverAerialServiceWhere[Q](FileuploadFlyoverAerialServices.Columns),
FileuploadPools: buildFileuploadPoolWhere[Q](FileuploadPools.Columns),
GeographyColumns: buildGeographyColumnWhere[Q](GeographyColumns.Columns),
GeometryColumns: buildGeometryColumnWhere[Q](GeometryColumns.Columns),

View file

@ -49,9 +49,10 @@ type FileuploadCSVSQuery = *psql.ViewQuery[*FileuploadCSV, FileuploadCSVSlice]
// fileuploadCSVR is where relationships are stored.
type fileuploadCSVR struct {
File *FileuploadFile // fileupload.csv.csv_file_id_fkey
CSVFileErrorCSVS FileuploadErrorCSVSlice // fileupload.error_csv.error_csv_csv_file_id_fkey
CSVFilePools FileuploadPoolSlice // fileupload.pool.pool_csv_file_fkey
File *FileuploadFile // fileupload.csv.csv_file_id_fkey
CSVFileErrorCSVS FileuploadErrorCSVSlice // fileupload.error_csv.error_csv_csv_file_id_fkey
CSVFileFlyoverAerialServices FileuploadFlyoverAerialServiceSlice // fileupload.flyover_aerial_service.flyover_aerial_service_csv_file_fkey
CSVFilePools FileuploadPoolSlice // fileupload.pool.pool_csv_file_fkey
}
func buildFileuploadCSVColumns(alias string) fileuploadCSVColumns {
@ -470,6 +471,30 @@ func (os FileuploadCSVSlice) CSVFileErrorCSVS(mods ...bob.Mod[*dialect.SelectQue
)...)
}
// CSVFileFlyoverAerialServices starts a query for related objects on fileupload.flyover_aerial_service
func (o *FileuploadCSV) CSVFileFlyoverAerialServices(mods ...bob.Mod[*dialect.SelectQuery]) FileuploadFlyoverAerialServicesQuery {
return FileuploadFlyoverAerialServices.Query(append(mods,
sm.Where(FileuploadFlyoverAerialServices.Columns.CSVFile.EQ(psql.Arg(o.FileID))),
)...)
}
func (os FileuploadCSVSlice) CSVFileFlyoverAerialServices(mods ...bob.Mod[*dialect.SelectQuery]) FileuploadFlyoverAerialServicesQuery {
pkFileID := make(pgtypes.Array[int32], 0, len(os))
for _, o := range os {
if o == nil {
continue
}
pkFileID = append(pkFileID, o.FileID)
}
PKArgExpr := psql.Select(sm.Columns(
psql.F("unnest", psql.Cast(psql.Arg(pkFileID), "integer[]")),
))
return FileuploadFlyoverAerialServices.Query(append(mods,
sm.Where(psql.Group(FileuploadFlyoverAerialServices.Columns.CSVFile).OP("IN", PKArgExpr)),
)...)
}
// CSVFilePools starts a query for related objects on fileupload.pool
func (o *FileuploadCSV) CSVFilePools(mods ...bob.Mod[*dialect.SelectQuery]) FileuploadPoolsQuery {
return FileuploadPools.Query(append(mods,
@ -610,6 +635,74 @@ func (fileuploadCSV0 *FileuploadCSV) AttachCSVFileErrorCSVS(ctx context.Context,
return nil
}
func insertFileuploadCSVCSVFileFlyoverAerialServices0(ctx context.Context, exec bob.Executor, fileuploadFlyoverAerialServices1 []*FileuploadFlyoverAerialServiceSetter, fileuploadCSV0 *FileuploadCSV) (FileuploadFlyoverAerialServiceSlice, error) {
for i := range fileuploadFlyoverAerialServices1 {
fileuploadFlyoverAerialServices1[i].CSVFile = omit.From(fileuploadCSV0.FileID)
}
ret, err := FileuploadFlyoverAerialServices.Insert(bob.ToMods(fileuploadFlyoverAerialServices1...)).All(ctx, exec)
if err != nil {
return ret, fmt.Errorf("insertFileuploadCSVCSVFileFlyoverAerialServices0: %w", err)
}
return ret, nil
}
func attachFileuploadCSVCSVFileFlyoverAerialServices0(ctx context.Context, exec bob.Executor, count int, fileuploadFlyoverAerialServices1 FileuploadFlyoverAerialServiceSlice, fileuploadCSV0 *FileuploadCSV) (FileuploadFlyoverAerialServiceSlice, error) {
setter := &FileuploadFlyoverAerialServiceSetter{
CSVFile: omit.From(fileuploadCSV0.FileID),
}
err := fileuploadFlyoverAerialServices1.UpdateAll(ctx, exec, *setter)
if err != nil {
return nil, fmt.Errorf("attachFileuploadCSVCSVFileFlyoverAerialServices0: %w", err)
}
return fileuploadFlyoverAerialServices1, nil
}
func (fileuploadCSV0 *FileuploadCSV) InsertCSVFileFlyoverAerialServices(ctx context.Context, exec bob.Executor, related ...*FileuploadFlyoverAerialServiceSetter) error {
if len(related) == 0 {
return nil
}
var err error
fileuploadFlyoverAerialServices1, err := insertFileuploadCSVCSVFileFlyoverAerialServices0(ctx, exec, related, fileuploadCSV0)
if err != nil {
return err
}
fileuploadCSV0.R.CSVFileFlyoverAerialServices = append(fileuploadCSV0.R.CSVFileFlyoverAerialServices, fileuploadFlyoverAerialServices1...)
for _, rel := range fileuploadFlyoverAerialServices1 {
rel.R.CSVFileCSV = fileuploadCSV0
}
return nil
}
func (fileuploadCSV0 *FileuploadCSV) AttachCSVFileFlyoverAerialServices(ctx context.Context, exec bob.Executor, related ...*FileuploadFlyoverAerialService) error {
if len(related) == 0 {
return nil
}
var err error
fileuploadFlyoverAerialServices1 := FileuploadFlyoverAerialServiceSlice(related)
_, err = attachFileuploadCSVCSVFileFlyoverAerialServices0(ctx, exec, len(related), fileuploadFlyoverAerialServices1, fileuploadCSV0)
if err != nil {
return err
}
fileuploadCSV0.R.CSVFileFlyoverAerialServices = append(fileuploadCSV0.R.CSVFileFlyoverAerialServices, fileuploadFlyoverAerialServices1...)
for _, rel := range related {
rel.R.CSVFileCSV = fileuploadCSV0
}
return nil
}
func insertFileuploadCSVCSVFilePools0(ctx context.Context, exec bob.Executor, fileuploadPools1 []*FileuploadPoolSetter, fileuploadCSV0 *FileuploadCSV) (FileuploadPoolSlice, error) {
for i := range fileuploadPools1 {
fileuploadPools1[i].CSVFile = omit.From(fileuploadCSV0.FileID)
@ -724,6 +817,20 @@ func (o *FileuploadCSV) Preload(name string, retrieved any) error {
o.R.CSVFileErrorCSVS = rels
for _, rel := range rels {
if rel != nil {
rel.R.CSVFileCSV = o
}
}
return nil
case "CSVFileFlyoverAerialServices":
rels, ok := retrieved.(FileuploadFlyoverAerialServiceSlice)
if !ok {
return fmt.Errorf("fileuploadCSV cannot load %T as %q", retrieved, name)
}
o.R.CSVFileFlyoverAerialServices = rels
for _, rel := range rels {
if rel != nil {
rel.R.CSVFileCSV = o
@ -772,9 +879,10 @@ func buildFileuploadCSVPreloader() fileuploadCSVPreloader {
}
type fileuploadCSVThenLoader[Q orm.Loadable] struct {
File func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
CSVFileErrorCSVS func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
CSVFilePools func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
File func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
CSVFileErrorCSVS func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
CSVFileFlyoverAerialServices func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
CSVFilePools func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
}
func buildFileuploadCSVThenLoader[Q orm.Loadable]() fileuploadCSVThenLoader[Q] {
@ -784,6 +892,9 @@ func buildFileuploadCSVThenLoader[Q orm.Loadable]() fileuploadCSVThenLoader[Q] {
type CSVFileErrorCSVSLoadInterface interface {
LoadCSVFileErrorCSVS(context.Context, bob.Executor, ...bob.Mod[*dialect.SelectQuery]) error
}
type CSVFileFlyoverAerialServicesLoadInterface interface {
LoadCSVFileFlyoverAerialServices(context.Context, bob.Executor, ...bob.Mod[*dialect.SelectQuery]) error
}
type CSVFilePoolsLoadInterface interface {
LoadCSVFilePools(context.Context, bob.Executor, ...bob.Mod[*dialect.SelectQuery]) error
}
@ -801,6 +912,12 @@ func buildFileuploadCSVThenLoader[Q orm.Loadable]() fileuploadCSVThenLoader[Q] {
return retrieved.LoadCSVFileErrorCSVS(ctx, exec, mods...)
},
),
CSVFileFlyoverAerialServices: thenLoadBuilder[Q](
"CSVFileFlyoverAerialServices",
func(ctx context.Context, exec bob.Executor, retrieved CSVFileFlyoverAerialServicesLoadInterface, mods ...bob.Mod[*dialect.SelectQuery]) error {
return retrieved.LoadCSVFileFlyoverAerialServices(ctx, exec, mods...)
},
),
CSVFilePools: thenLoadBuilder[Q](
"CSVFilePools",
func(ctx context.Context, exec bob.Executor, retrieved CSVFilePoolsLoadInterface, mods ...bob.Mod[*dialect.SelectQuery]) error {
@ -923,6 +1040,67 @@ func (os FileuploadCSVSlice) LoadCSVFileErrorCSVS(ctx context.Context, exec bob.
return nil
}
// LoadCSVFileFlyoverAerialServices loads the fileuploadCSV's CSVFileFlyoverAerialServices into the .R struct
func (o *FileuploadCSV) LoadCSVFileFlyoverAerialServices(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
if o == nil {
return nil
}
// Reset the relationship
o.R.CSVFileFlyoverAerialServices = nil
related, err := o.CSVFileFlyoverAerialServices(mods...).All(ctx, exec)
if err != nil {
return err
}
for _, rel := range related {
rel.R.CSVFileCSV = o
}
o.R.CSVFileFlyoverAerialServices = related
return nil
}
// LoadCSVFileFlyoverAerialServices loads the fileuploadCSV's CSVFileFlyoverAerialServices into the .R struct
func (os FileuploadCSVSlice) LoadCSVFileFlyoverAerialServices(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
if len(os) == 0 {
return nil
}
fileuploadFlyoverAerialServices, err := os.CSVFileFlyoverAerialServices(mods...).All(ctx, exec)
if err != nil {
return err
}
for _, o := range os {
if o == nil {
continue
}
o.R.CSVFileFlyoverAerialServices = nil
}
for _, o := range os {
if o == nil {
continue
}
for _, rel := range fileuploadFlyoverAerialServices {
if !(o.FileID == rel.CSVFile) {
continue
}
rel.R.CSVFileCSV = o
o.R.CSVFileFlyoverAerialServices = append(o.R.CSVFileFlyoverAerialServices, rel)
}
}
return nil
}
// LoadCSVFilePools loads the fileuploadCSV's CSVFilePools into the .R struct
func (o *FileuploadCSV) LoadCSVFilePools(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
if o == nil {
@ -986,8 +1164,9 @@ func (os FileuploadCSVSlice) LoadCSVFilePools(ctx context.Context, exec bob.Exec
// fileuploadCSVC is where relationship counts are stored.
type fileuploadCSVC struct {
CSVFileErrorCSVS *int64
CSVFilePools *int64
CSVFileErrorCSVS *int64
CSVFileFlyoverAerialServices *int64
CSVFilePools *int64
}
// PreloadCount sets a count in the C struct by name
@ -999,6 +1178,8 @@ func (o *FileuploadCSV) PreloadCount(name string, count int64) error {
switch name {
case "CSVFileErrorCSVS":
o.C.CSVFileErrorCSVS = &count
case "CSVFileFlyoverAerialServices":
o.C.CSVFileFlyoverAerialServices = &count
case "CSVFilePools":
o.C.CSVFilePools = &count
}
@ -1006,8 +1187,9 @@ func (o *FileuploadCSV) PreloadCount(name string, count int64) error {
}
type fileuploadCSVCountPreloader struct {
CSVFileErrorCSVS func(...bob.Mod[*dialect.SelectQuery]) psql.Preloader
CSVFilePools func(...bob.Mod[*dialect.SelectQuery]) psql.Preloader
CSVFileErrorCSVS func(...bob.Mod[*dialect.SelectQuery]) psql.Preloader
CSVFileFlyoverAerialServices func(...bob.Mod[*dialect.SelectQuery]) psql.Preloader
CSVFilePools func(...bob.Mod[*dialect.SelectQuery]) psql.Preloader
}
func buildFileuploadCSVCountPreloader() fileuploadCSVCountPreloader {
@ -1029,6 +1211,23 @@ func buildFileuploadCSVCountPreloader() fileuploadCSVCountPreloader {
return psql.Group(psql.Select(subqueryMods...).Expression)
})
},
CSVFileFlyoverAerialServices: func(mods ...bob.Mod[*dialect.SelectQuery]) psql.Preloader {
return countPreloader[*FileuploadCSV]("CSVFileFlyoverAerialServices", func(parent string) bob.Expression {
// Build a correlated subquery: (SELECT COUNT(*) FROM related WHERE fk = parent.pk)
if parent == "" {
parent = FileuploadCSVS.Alias()
}
subqueryMods := []bob.Mod[*dialect.SelectQuery]{
sm.Columns(psql.Raw("count(*)")),
sm.From(FileuploadFlyoverAerialServices.Name()),
sm.Where(psql.Quote(FileuploadFlyoverAerialServices.Alias(), "csv_file").EQ(psql.Quote(parent, "file_id"))),
}
subqueryMods = append(subqueryMods, mods...)
return psql.Group(psql.Select(subqueryMods...).Expression)
})
},
CSVFilePools: func(mods ...bob.Mod[*dialect.SelectQuery]) psql.Preloader {
return countPreloader[*FileuploadCSV]("CSVFilePools", func(parent string) bob.Expression {
// Build a correlated subquery: (SELECT COUNT(*) FROM related WHERE fk = parent.pk)
@ -1050,14 +1249,18 @@ func buildFileuploadCSVCountPreloader() fileuploadCSVCountPreloader {
}
type fileuploadCSVCountThenLoader[Q orm.Loadable] struct {
CSVFileErrorCSVS func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
CSVFilePools func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
CSVFileErrorCSVS func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
CSVFileFlyoverAerialServices func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
CSVFilePools func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
}
func buildFileuploadCSVCountThenLoader[Q orm.Loadable]() fileuploadCSVCountThenLoader[Q] {
type CSVFileErrorCSVSCountInterface interface {
LoadCountCSVFileErrorCSVS(context.Context, bob.Executor, ...bob.Mod[*dialect.SelectQuery]) error
}
type CSVFileFlyoverAerialServicesCountInterface interface {
LoadCountCSVFileFlyoverAerialServices(context.Context, bob.Executor, ...bob.Mod[*dialect.SelectQuery]) error
}
type CSVFilePoolsCountInterface interface {
LoadCountCSVFilePools(context.Context, bob.Executor, ...bob.Mod[*dialect.SelectQuery]) error
}
@ -1069,6 +1272,12 @@ func buildFileuploadCSVCountThenLoader[Q orm.Loadable]() fileuploadCSVCountThenL
return retrieved.LoadCountCSVFileErrorCSVS(ctx, exec, mods...)
},
),
CSVFileFlyoverAerialServices: countThenLoadBuilder[Q](
"CSVFileFlyoverAerialServices",
func(ctx context.Context, exec bob.Executor, retrieved CSVFileFlyoverAerialServicesCountInterface, mods ...bob.Mod[*dialect.SelectQuery]) error {
return retrieved.LoadCountCSVFileFlyoverAerialServices(ctx, exec, mods...)
},
),
CSVFilePools: countThenLoadBuilder[Q](
"CSVFilePools",
func(ctx context.Context, exec bob.Executor, retrieved CSVFilePoolsCountInterface, mods ...bob.Mod[*dialect.SelectQuery]) error {
@ -1108,6 +1317,36 @@ func (os FileuploadCSVSlice) LoadCountCSVFileErrorCSVS(ctx context.Context, exec
return nil
}
// LoadCountCSVFileFlyoverAerialServices loads the count of CSVFileFlyoverAerialServices into the C struct
func (o *FileuploadCSV) LoadCountCSVFileFlyoverAerialServices(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
if o == nil {
return nil
}
count, err := o.CSVFileFlyoverAerialServices(mods...).Count(ctx, exec)
if err != nil {
return err
}
o.C.CSVFileFlyoverAerialServices = &count
return nil
}
// LoadCountCSVFileFlyoverAerialServices loads the count of CSVFileFlyoverAerialServices for a slice
func (os FileuploadCSVSlice) LoadCountCSVFileFlyoverAerialServices(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
if len(os) == 0 {
return nil
}
for _, o := range os {
if err := o.LoadCountCSVFileFlyoverAerialServices(ctx, exec, mods...); err != nil {
return err
}
}
return nil
}
// LoadCountCSVFilePools loads the count of CSVFilePools into the C struct
func (o *FileuploadCSV) LoadCountCSVFilePools(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
if o == nil {
@ -1139,10 +1378,11 @@ func (os FileuploadCSVSlice) LoadCountCSVFilePools(ctx context.Context, exec bob
}
type fileuploadCSVJoins[Q dialect.Joinable] struct {
typ string
File modAs[Q, fileuploadFileColumns]
CSVFileErrorCSVS modAs[Q, fileuploadErrorCSVColumns]
CSVFilePools modAs[Q, fileuploadPoolColumns]
typ string
File modAs[Q, fileuploadFileColumns]
CSVFileErrorCSVS modAs[Q, fileuploadErrorCSVColumns]
CSVFileFlyoverAerialServices modAs[Q, fileuploadFlyoverAerialServiceColumns]
CSVFilePools modAs[Q, fileuploadPoolColumns]
}
func (j fileuploadCSVJoins[Q]) aliasedAs(alias string) fileuploadCSVJoins[Q] {
@ -1180,6 +1420,20 @@ func buildFileuploadCSVJoins[Q dialect.Joinable](cols fileuploadCSVColumns, typ
return mods
},
},
CSVFileFlyoverAerialServices: modAs[Q, fileuploadFlyoverAerialServiceColumns]{
c: FileuploadFlyoverAerialServices.Columns,
f: func(to fileuploadFlyoverAerialServiceColumns) bob.Mod[Q] {
mods := make(mods.QueryMods[Q], 0, 1)
{
mods = append(mods, dialect.Join[Q](typ, FileuploadFlyoverAerialServices.Name().As(to.Alias())).On(
to.CSVFile.EQ(cols.FileID),
))
}
return mods
},
},
CSVFilePools: modAs[Q, fileuploadPoolColumns]{
c: FileuploadPools.Columns,
f: func(to fileuploadPoolColumns) bob.Mod[Q] {

File diff suppressed because it is too large Load diff

View file

@ -113,6 +113,7 @@ type organizationR struct {
Zones2s FieldseekerZones2Slice // fieldseeker.zones2.zones2_organization_id_fkey
FieldseekerSyncs FieldseekerSyncSlice // fieldseeker_sync.fieldseeker_sync_organization_id_fkey
Files FileuploadFileSlice // fileupload.file.file_organization_id_fkey
FlyoverAerialServices FileuploadFlyoverAerialServiceSlice // fileupload.flyover_aerial_service.flyover_aerial_service_organization_id_fkey
Pools FileuploadPoolSlice // fileupload.pool.pool_organization_id_fkey
H3Aggregations H3AggregationSlice // h3_aggregation.h3_aggregation_organization_id_fkey
NoteAudios NoteAudioSlice // note_audio.note_audio_organization_id_fkey
@ -1735,6 +1736,30 @@ func (os OrganizationSlice) Files(mods ...bob.Mod[*dialect.SelectQuery]) Fileupl
)...)
}
// FlyoverAerialServices starts a query for related objects on fileupload.flyover_aerial_service
func (o *Organization) FlyoverAerialServices(mods ...bob.Mod[*dialect.SelectQuery]) FileuploadFlyoverAerialServicesQuery {
return FileuploadFlyoverAerialServices.Query(append(mods,
sm.Where(FileuploadFlyoverAerialServices.Columns.OrganizationID.EQ(psql.Arg(o.ID))),
)...)
}
func (os OrganizationSlice) FlyoverAerialServices(mods ...bob.Mod[*dialect.SelectQuery]) FileuploadFlyoverAerialServicesQuery {
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 FileuploadFlyoverAerialServices.Query(append(mods,
sm.Where(psql.Group(FileuploadFlyoverAerialServices.Columns.OrganizationID).OP("IN", PKArgExpr)),
)...)
}
// Pools starts a query for related objects on fileupload.pool
func (o *Organization) Pools(mods ...bob.Mod[*dialect.SelectQuery]) FileuploadPoolsQuery {
return FileuploadPools.Query(append(mods,
@ -4281,6 +4306,74 @@ func (organization0 *Organization) AttachFiles(ctx context.Context, exec bob.Exe
return nil
}
func insertOrganizationFlyoverAerialServices0(ctx context.Context, exec bob.Executor, fileuploadFlyoverAerialServices1 []*FileuploadFlyoverAerialServiceSetter, organization0 *Organization) (FileuploadFlyoverAerialServiceSlice, error) {
for i := range fileuploadFlyoverAerialServices1 {
fileuploadFlyoverAerialServices1[i].OrganizationID = omit.From(organization0.ID)
}
ret, err := FileuploadFlyoverAerialServices.Insert(bob.ToMods(fileuploadFlyoverAerialServices1...)).All(ctx, exec)
if err != nil {
return ret, fmt.Errorf("insertOrganizationFlyoverAerialServices0: %w", err)
}
return ret, nil
}
func attachOrganizationFlyoverAerialServices0(ctx context.Context, exec bob.Executor, count int, fileuploadFlyoverAerialServices1 FileuploadFlyoverAerialServiceSlice, organization0 *Organization) (FileuploadFlyoverAerialServiceSlice, error) {
setter := &FileuploadFlyoverAerialServiceSetter{
OrganizationID: omit.From(organization0.ID),
}
err := fileuploadFlyoverAerialServices1.UpdateAll(ctx, exec, *setter)
if err != nil {
return nil, fmt.Errorf("attachOrganizationFlyoverAerialServices0: %w", err)
}
return fileuploadFlyoverAerialServices1, nil
}
func (organization0 *Organization) InsertFlyoverAerialServices(ctx context.Context, exec bob.Executor, related ...*FileuploadFlyoverAerialServiceSetter) error {
if len(related) == 0 {
return nil
}
var err error
fileuploadFlyoverAerialServices1, err := insertOrganizationFlyoverAerialServices0(ctx, exec, related, organization0)
if err != nil {
return err
}
organization0.R.FlyoverAerialServices = append(organization0.R.FlyoverAerialServices, fileuploadFlyoverAerialServices1...)
for _, rel := range fileuploadFlyoverAerialServices1 {
rel.R.Organization = organization0
}
return nil
}
func (organization0 *Organization) AttachFlyoverAerialServices(ctx context.Context, exec bob.Executor, related ...*FileuploadFlyoverAerialService) error {
if len(related) == 0 {
return nil
}
var err error
fileuploadFlyoverAerialServices1 := FileuploadFlyoverAerialServiceSlice(related)
_, err = attachOrganizationFlyoverAerialServices0(ctx, exec, len(related), fileuploadFlyoverAerialServices1, organization0)
if err != nil {
return err
}
organization0.R.FlyoverAerialServices = append(organization0.R.FlyoverAerialServices, fileuploadFlyoverAerialServices1...)
for _, rel := range related {
rel.R.Organization = organization0
}
return nil
}
func insertOrganizationPools0(ctx context.Context, exec bob.Executor, fileuploadPools1 []*FileuploadPoolSetter, organization0 *Organization) (FileuploadPoolSlice, error) {
for i := range fileuploadPools1 {
fileuploadPools1[i].OrganizationID = omit.From(organization0.ID)
@ -5473,6 +5566,20 @@ func (o *Organization) Preload(name string, retrieved any) error {
o.R.Files = rels
for _, rel := range rels {
if rel != nil {
rel.R.Organization = o
}
}
return nil
case "FlyoverAerialServices":
rels, ok := retrieved.(FileuploadFlyoverAerialServiceSlice)
if !ok {
return fmt.Errorf("organization cannot load %T as %q", retrieved, name)
}
o.R.FlyoverAerialServices = rels
for _, rel := range rels {
if rel != nil {
rel.R.Organization = o
@ -5691,6 +5798,7 @@ type organizationThenLoader[Q orm.Loadable] struct {
Zones2s func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
FieldseekerSyncs func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
Files func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
FlyoverAerialServices func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
Pools func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
H3Aggregations func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
NoteAudios func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
@ -5806,6 +5914,9 @@ func buildOrganizationThenLoader[Q orm.Loadable]() organizationThenLoader[Q] {
type FilesLoadInterface interface {
LoadFiles(context.Context, bob.Executor, ...bob.Mod[*dialect.SelectQuery]) error
}
type FlyoverAerialServicesLoadInterface interface {
LoadFlyoverAerialServices(context.Context, bob.Executor, ...bob.Mod[*dialect.SelectQuery]) error
}
type PoolsLoadInterface interface {
LoadPools(context.Context, bob.Executor, ...bob.Mod[*dialect.SelectQuery]) error
}
@ -6042,6 +6153,12 @@ func buildOrganizationThenLoader[Q orm.Loadable]() organizationThenLoader[Q] {
return retrieved.LoadFiles(ctx, exec, mods...)
},
),
FlyoverAerialServices: thenLoadBuilder[Q](
"FlyoverAerialServices",
func(ctx context.Context, exec bob.Executor, retrieved FlyoverAerialServicesLoadInterface, mods ...bob.Mod[*dialect.SelectQuery]) error {
return retrieved.LoadFlyoverAerialServices(ctx, exec, mods...)
},
),
Pools: thenLoadBuilder[Q](
"Pools",
func(ctx context.Context, exec bob.Executor, retrieved PoolsLoadInterface, mods ...bob.Mod[*dialect.SelectQuery]) error {
@ -8219,6 +8336,67 @@ func (os OrganizationSlice) LoadFiles(ctx context.Context, exec bob.Executor, mo
return nil
}
// LoadFlyoverAerialServices loads the organization's FlyoverAerialServices into the .R struct
func (o *Organization) LoadFlyoverAerialServices(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
if o == nil {
return nil
}
// Reset the relationship
o.R.FlyoverAerialServices = nil
related, err := o.FlyoverAerialServices(mods...).All(ctx, exec)
if err != nil {
return err
}
for _, rel := range related {
rel.R.Organization = o
}
o.R.FlyoverAerialServices = related
return nil
}
// LoadFlyoverAerialServices loads the organization's FlyoverAerialServices into the .R struct
func (os OrganizationSlice) LoadFlyoverAerialServices(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
if len(os) == 0 {
return nil
}
fileuploadFlyoverAerialServices, err := os.FlyoverAerialServices(mods...).All(ctx, exec)
if err != nil {
return err
}
for _, o := range os {
if o == nil {
continue
}
o.R.FlyoverAerialServices = nil
}
for _, o := range os {
if o == nil {
continue
}
for _, rel := range fileuploadFlyoverAerialServices {
if !(o.ID == rel.OrganizationID) {
continue
}
rel.R.Organization = o
o.R.FlyoverAerialServices = append(o.R.FlyoverAerialServices, rel)
}
}
return nil
}
// LoadPools loads the organization's Pools into the .R struct
func (o *Organization) LoadPools(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
if o == nil {
@ -8862,6 +9040,7 @@ type organizationC struct {
Zones2s *int64
FieldseekerSyncs *int64
Files *int64
FlyoverAerialServices *int64
Pools *int64
H3Aggregations *int64
NoteAudios *int64
@ -8947,6 +9126,8 @@ func (o *Organization) PreloadCount(name string, count int64) error {
o.C.FieldseekerSyncs = &count
case "Files":
o.C.Files = &count
case "FlyoverAerialServices":
o.C.FlyoverAerialServices = &count
case "Pools":
o.C.Pools = &count
case "H3Aggregations":
@ -9002,6 +9183,7 @@ type organizationCountPreloader struct {
Zones2s func(...bob.Mod[*dialect.SelectQuery]) psql.Preloader
FieldseekerSyncs func(...bob.Mod[*dialect.SelectQuery]) psql.Preloader
Files func(...bob.Mod[*dialect.SelectQuery]) psql.Preloader
FlyoverAerialServices func(...bob.Mod[*dialect.SelectQuery]) psql.Preloader
Pools func(...bob.Mod[*dialect.SelectQuery]) psql.Preloader
H3Aggregations func(...bob.Mod[*dialect.SelectQuery]) psql.Preloader
NoteAudios func(...bob.Mod[*dialect.SelectQuery]) psql.Preloader
@ -9598,6 +9780,23 @@ func buildOrganizationCountPreloader() organizationCountPreloader {
return psql.Group(psql.Select(subqueryMods...).Expression)
})
},
FlyoverAerialServices: func(mods ...bob.Mod[*dialect.SelectQuery]) psql.Preloader {
return countPreloader[*Organization]("FlyoverAerialServices", func(parent string) bob.Expression {
// Build a correlated subquery: (SELECT COUNT(*) FROM related WHERE fk = parent.pk)
if parent == "" {
parent = Organizations.Alias()
}
subqueryMods := []bob.Mod[*dialect.SelectQuery]{
sm.Columns(psql.Raw("count(*)")),
sm.From(FileuploadFlyoverAerialServices.Name()),
sm.Where(psql.Quote(FileuploadFlyoverAerialServices.Alias(), "organization_id").EQ(psql.Quote(parent, "id"))),
}
subqueryMods = append(subqueryMods, mods...)
return psql.Group(psql.Select(subqueryMods...).Expression)
})
},
Pools: func(mods ...bob.Mod[*dialect.SelectQuery]) psql.Preloader {
return countPreloader[*Organization]("Pools", func(parent string) bob.Expression {
// Build a correlated subquery: (SELECT COUNT(*) FROM related WHERE fk = parent.pk)
@ -9772,6 +9971,7 @@ type organizationCountThenLoader[Q orm.Loadable] struct {
Zones2s func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
FieldseekerSyncs func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
Files func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
FlyoverAerialServices func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
Pools func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
H3Aggregations func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
NoteAudios func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
@ -9885,6 +10085,9 @@ func buildOrganizationCountThenLoader[Q orm.Loadable]() organizationCountThenLoa
type FilesCountInterface interface {
LoadCountFiles(context.Context, bob.Executor, ...bob.Mod[*dialect.SelectQuery]) error
}
type FlyoverAerialServicesCountInterface interface {
LoadCountFlyoverAerialServices(context.Context, bob.Executor, ...bob.Mod[*dialect.SelectQuery]) error
}
type PoolsCountInterface interface {
LoadCountPools(context.Context, bob.Executor, ...bob.Mod[*dialect.SelectQuery]) error
}
@ -10115,6 +10318,12 @@ func buildOrganizationCountThenLoader[Q orm.Loadable]() organizationCountThenLoa
return retrieved.LoadCountFiles(ctx, exec, mods...)
},
),
FlyoverAerialServices: countThenLoadBuilder[Q](
"FlyoverAerialServices",
func(ctx context.Context, exec bob.Executor, retrieved FlyoverAerialServicesCountInterface, mods ...bob.Mod[*dialect.SelectQuery]) error {
return retrieved.LoadCountFlyoverAerialServices(ctx, exec, mods...)
},
),
Pools: countThenLoadBuilder[Q](
"Pools",
func(ctx context.Context, exec bob.Executor, retrieved PoolsCountInterface, mods ...bob.Mod[*dialect.SelectQuery]) error {
@ -11186,6 +11395,36 @@ func (os OrganizationSlice) LoadCountFiles(ctx context.Context, exec bob.Executo
return nil
}
// LoadCountFlyoverAerialServices loads the count of FlyoverAerialServices into the C struct
func (o *Organization) LoadCountFlyoverAerialServices(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
if o == nil {
return nil
}
count, err := o.FlyoverAerialServices(mods...).Count(ctx, exec)
if err != nil {
return err
}
o.C.FlyoverAerialServices = &count
return nil
}
// LoadCountFlyoverAerialServices loads the count of FlyoverAerialServices for a slice
func (os OrganizationSlice) LoadCountFlyoverAerialServices(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
if len(os) == 0 {
return nil
}
for _, o := range os {
if err := o.LoadCountFlyoverAerialServices(ctx, exec, mods...); err != nil {
return err
}
}
return nil
}
// LoadCountPools loads the count of Pools into the C struct
func (o *Organization) LoadCountPools(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
if o == nil {
@ -11462,6 +11701,7 @@ type organizationJoins[Q dialect.Joinable] struct {
Zones2s modAs[Q, fieldseekerZones2Columns]
FieldseekerSyncs modAs[Q, fieldseekerSyncColumns]
Files modAs[Q, fileuploadFileColumns]
FlyoverAerialServices modAs[Q, fileuploadFlyoverAerialServiceColumns]
Pools modAs[Q, fileuploadPoolColumns]
H3Aggregations modAs[Q, h3AggregationColumns]
NoteAudios modAs[Q, noteAudioColumns]
@ -11973,6 +12213,20 @@ func buildOrganizationJoins[Q dialect.Joinable](cols organizationColumns, typ st
return mods
},
},
FlyoverAerialServices: modAs[Q, fileuploadFlyoverAerialServiceColumns]{
c: FileuploadFlyoverAerialServices.Columns,
f: func(to fileuploadFlyoverAerialServiceColumns) bob.Mod[Q] {
mods := make(mods.QueryMods[Q], 0, 1)
{
mods = append(mods, dialect.Join[Q](typ, FileuploadFlyoverAerialServices.Name().As(to.Alias())).On(
to.OrganizationID.EQ(cols.ID),
))
}
return mods
},
},
Pools: modAs[Q, fileuploadPoolColumns]{
c: FileuploadPools.Columns,
f: func(to fileuploadPoolColumns) bob.Mod[Q] {

View file

@ -58,20 +58,21 @@ type UsersQuery = *psql.ViewQuery[*User, UserSlice]
// userR is where relationships are stored.
type userR struct {
UserOauthTokens ArcgisOauthTokenSlice // arcgis.oauth_token.oauth_token_user_id_fkey
PublicUserUser ArcgisUserSlice // arcgis.user_.user__public_user_id_fkey
CreatorComplianceReportRequests ComplianceReportRequestSlice // compliance_report_request.compliance_report_request_creator_fkey
CreatorFiles FileuploadFileSlice // fileupload.file.file_creator_id_fkey
FileuploadPool FileuploadPoolSlice // fileupload.pool.pool_creator_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
CreatorPools PoolSlice // pool.pool_creator_id_fkey
CreatorResidents ResidentSlice // resident.resident_creator_fkey
CreatorSites SiteSlice // site.site_creator_id_fkey
Organization *Organization // user_.user__organization_id_fkey
UserOauthTokens ArcgisOauthTokenSlice // arcgis.oauth_token.oauth_token_user_id_fkey
PublicUserUser ArcgisUserSlice // arcgis.user_.user__public_user_id_fkey
CreatorComplianceReportRequests ComplianceReportRequestSlice // compliance_report_request.compliance_report_request_creator_fkey
CreatorFiles FileuploadFileSlice // fileupload.file.file_creator_id_fkey
CreatorFlyoverAerialServices FileuploadFlyoverAerialServiceSlice // fileupload.flyover_aerial_service.flyover_aerial_service_creator_id_fkey
FileuploadPool FileuploadPoolSlice // fileupload.pool.pool_creator_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
CreatorPools PoolSlice // pool.pool_creator_id_fkey
CreatorResidents ResidentSlice // resident.resident_creator_fkey
CreatorSites SiteSlice // site.site_creator_id_fkey
Organization *Organization // user_.user__organization_id_fkey
}
func buildUserColumns(alias string) userColumns {
@ -736,6 +737,30 @@ func (os UserSlice) CreatorFiles(mods ...bob.Mod[*dialect.SelectQuery]) Fileuplo
)...)
}
// CreatorFlyoverAerialServices starts a query for related objects on fileupload.flyover_aerial_service
func (o *User) CreatorFlyoverAerialServices(mods ...bob.Mod[*dialect.SelectQuery]) FileuploadFlyoverAerialServicesQuery {
return FileuploadFlyoverAerialServices.Query(append(mods,
sm.Where(FileuploadFlyoverAerialServices.Columns.CreatorID.EQ(psql.Arg(o.ID))),
)...)
}
func (os UserSlice) CreatorFlyoverAerialServices(mods ...bob.Mod[*dialect.SelectQuery]) FileuploadFlyoverAerialServicesQuery {
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 FileuploadFlyoverAerialServices.Query(append(mods,
sm.Where(psql.Group(FileuploadFlyoverAerialServices.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,
@ -1248,6 +1273,74 @@ func (user0 *User) AttachCreatorFiles(ctx context.Context, exec bob.Executor, re
return nil
}
func insertUserCreatorFlyoverAerialServices0(ctx context.Context, exec bob.Executor, fileuploadFlyoverAerialServices1 []*FileuploadFlyoverAerialServiceSetter, user0 *User) (FileuploadFlyoverAerialServiceSlice, error) {
for i := range fileuploadFlyoverAerialServices1 {
fileuploadFlyoverAerialServices1[i].CreatorID = omit.From(user0.ID)
}
ret, err := FileuploadFlyoverAerialServices.Insert(bob.ToMods(fileuploadFlyoverAerialServices1...)).All(ctx, exec)
if err != nil {
return ret, fmt.Errorf("insertUserCreatorFlyoverAerialServices0: %w", err)
}
return ret, nil
}
func attachUserCreatorFlyoverAerialServices0(ctx context.Context, exec bob.Executor, count int, fileuploadFlyoverAerialServices1 FileuploadFlyoverAerialServiceSlice, user0 *User) (FileuploadFlyoverAerialServiceSlice, error) {
setter := &FileuploadFlyoverAerialServiceSetter{
CreatorID: omit.From(user0.ID),
}
err := fileuploadFlyoverAerialServices1.UpdateAll(ctx, exec, *setter)
if err != nil {
return nil, fmt.Errorf("attachUserCreatorFlyoverAerialServices0: %w", err)
}
return fileuploadFlyoverAerialServices1, nil
}
func (user0 *User) InsertCreatorFlyoverAerialServices(ctx context.Context, exec bob.Executor, related ...*FileuploadFlyoverAerialServiceSetter) error {
if len(related) == 0 {
return nil
}
var err error
fileuploadFlyoverAerialServices1, err := insertUserCreatorFlyoverAerialServices0(ctx, exec, related, user0)
if err != nil {
return err
}
user0.R.CreatorFlyoverAerialServices = append(user0.R.CreatorFlyoverAerialServices, fileuploadFlyoverAerialServices1...)
for _, rel := range fileuploadFlyoverAerialServices1 {
rel.R.CreatorUser = user0
}
return nil
}
func (user0 *User) AttachCreatorFlyoverAerialServices(ctx context.Context, exec bob.Executor, related ...*FileuploadFlyoverAerialService) error {
if len(related) == 0 {
return nil
}
var err error
fileuploadFlyoverAerialServices1 := FileuploadFlyoverAerialServiceSlice(related)
_, err = attachUserCreatorFlyoverAerialServices0(ctx, exec, len(related), fileuploadFlyoverAerialServices1, user0)
if err != nil {
return err
}
user0.R.CreatorFlyoverAerialServices = append(user0.R.CreatorFlyoverAerialServices, fileuploadFlyoverAerialServices1...)
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)
@ -2002,6 +2095,20 @@ func (o *User) Preload(name string, retrieved any) error {
o.R.CreatorFiles = rels
for _, rel := range rels {
if rel != nil {
rel.R.CreatorUser = o
}
}
return nil
case "CreatorFlyoverAerialServices":
rels, ok := retrieved.(FileuploadFlyoverAerialServiceSlice)
if !ok {
return fmt.Errorf("user cannot load %T as %q", retrieved, name)
}
o.R.CreatorFlyoverAerialServices = rels
for _, rel := range rels {
if rel != nil {
rel.R.CreatorUser = o
@ -2178,6 +2285,7 @@ type userThenLoader[Q orm.Loadable] struct {
PublicUserUser func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
CreatorComplianceReportRequests func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
CreatorFiles func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
CreatorFlyoverAerialServices func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
FileuploadPool 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]
@ -2203,6 +2311,9 @@ func buildUserThenLoader[Q orm.Loadable]() userThenLoader[Q] {
type CreatorFilesLoadInterface interface {
LoadCreatorFiles(context.Context, bob.Executor, ...bob.Mod[*dialect.SelectQuery]) error
}
type CreatorFlyoverAerialServicesLoadInterface interface {
LoadCreatorFlyoverAerialServices(context.Context, bob.Executor, ...bob.Mod[*dialect.SelectQuery]) error
}
type FileuploadPoolLoadInterface interface {
LoadFileuploadPool(context.Context, bob.Executor, ...bob.Mod[*dialect.SelectQuery]) error
}
@ -2259,6 +2370,12 @@ func buildUserThenLoader[Q orm.Loadable]() userThenLoader[Q] {
return retrieved.LoadCreatorFiles(ctx, exec, mods...)
},
),
CreatorFlyoverAerialServices: thenLoadBuilder[Q](
"CreatorFlyoverAerialServices",
func(ctx context.Context, exec bob.Executor, retrieved CreatorFlyoverAerialServicesLoadInterface, mods ...bob.Mod[*dialect.SelectQuery]) error {
return retrieved.LoadCreatorFlyoverAerialServices(ctx, exec, mods...)
},
),
FileuploadPool: thenLoadBuilder[Q](
"FileuploadPool",
func(ctx context.Context, exec bob.Executor, retrieved FileuploadPoolLoadInterface, mods ...bob.Mod[*dialect.SelectQuery]) error {
@ -2566,6 +2683,67 @@ func (os UserSlice) LoadCreatorFiles(ctx context.Context, exec bob.Executor, mod
return nil
}
// LoadCreatorFlyoverAerialServices loads the user's CreatorFlyoverAerialServices into the .R struct
func (o *User) LoadCreatorFlyoverAerialServices(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
if o == nil {
return nil
}
// Reset the relationship
o.R.CreatorFlyoverAerialServices = nil
related, err := o.CreatorFlyoverAerialServices(mods...).All(ctx, exec)
if err != nil {
return err
}
for _, rel := range related {
rel.R.CreatorUser = o
}
o.R.CreatorFlyoverAerialServices = related
return nil
}
// LoadCreatorFlyoverAerialServices loads the user's CreatorFlyoverAerialServices into the .R struct
func (os UserSlice) LoadCreatorFlyoverAerialServices(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
if len(os) == 0 {
return nil
}
fileuploadFlyoverAerialServices, err := os.CreatorFlyoverAerialServices(mods...).All(ctx, exec)
if err != nil {
return err
}
for _, o := range os {
if o == nil {
continue
}
o.R.CreatorFlyoverAerialServices = nil
}
for _, o := range os {
if o == nil {
continue
}
for _, rel := range fileuploadFlyoverAerialServices {
if !(o.ID == rel.CreatorID) {
continue
}
rel.R.CreatorUser = o
o.R.CreatorFlyoverAerialServices = append(o.R.CreatorFlyoverAerialServices, 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 {
@ -3179,6 +3357,7 @@ type userC struct {
PublicUserUser *int64
CreatorComplianceReportRequests *int64
CreatorFiles *int64
CreatorFlyoverAerialServices *int64
FileuploadPool *int64
CreatorNoteAudios *int64
DeletorNoteAudios *int64
@ -3205,6 +3384,8 @@ func (o *User) PreloadCount(name string, count int64) error {
o.C.CreatorComplianceReportRequests = &count
case "CreatorFiles":
o.C.CreatorFiles = &count
case "CreatorFlyoverAerialServices":
o.C.CreatorFlyoverAerialServices = &count
case "FileuploadPool":
o.C.FileuploadPool = &count
case "CreatorNoteAudios":
@ -3232,6 +3413,7 @@ type userCountPreloader struct {
PublicUserUser func(...bob.Mod[*dialect.SelectQuery]) psql.Preloader
CreatorComplianceReportRequests func(...bob.Mod[*dialect.SelectQuery]) psql.Preloader
CreatorFiles func(...bob.Mod[*dialect.SelectQuery]) psql.Preloader
CreatorFlyoverAerialServices func(...bob.Mod[*dialect.SelectQuery]) psql.Preloader
FileuploadPool func(...bob.Mod[*dialect.SelectQuery]) psql.Preloader
CreatorNoteAudios func(...bob.Mod[*dialect.SelectQuery]) psql.Preloader
DeletorNoteAudios func(...bob.Mod[*dialect.SelectQuery]) psql.Preloader
@ -3313,6 +3495,23 @@ func buildUserCountPreloader() userCountPreloader {
return psql.Group(psql.Select(subqueryMods...).Expression)
})
},
CreatorFlyoverAerialServices: func(mods ...bob.Mod[*dialect.SelectQuery]) psql.Preloader {
return countPreloader[*User]("CreatorFlyoverAerialServices", func(parent string) bob.Expression {
// Build a correlated subquery: (SELECT COUNT(*) FROM related WHERE fk = parent.pk)
if parent == "" {
parent = Users.Alias()
}
subqueryMods := []bob.Mod[*dialect.SelectQuery]{
sm.Columns(psql.Raw("count(*)")),
sm.From(FileuploadFlyoverAerialServices.Name()),
sm.Where(psql.Quote(FileuploadFlyoverAerialServices.Alias(), "creator_id").EQ(psql.Quote(parent, "id"))),
}
subqueryMods = append(subqueryMods, mods...)
return psql.Group(psql.Select(subqueryMods...).Expression)
})
},
FileuploadPool: func(mods ...bob.Mod[*dialect.SelectQuery]) psql.Preloader {
return countPreloader[*User]("FileuploadPool", func(parent string) bob.Expression {
// Build a correlated subquery: (SELECT COUNT(*) FROM related WHERE fk = parent.pk)
@ -3474,6 +3673,7 @@ type userCountThenLoader[Q orm.Loadable] struct {
PublicUserUser func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
CreatorComplianceReportRequests func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
CreatorFiles func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
CreatorFlyoverAerialServices func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
FileuploadPool 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]
@ -3498,6 +3698,9 @@ func buildUserCountThenLoader[Q orm.Loadable]() userCountThenLoader[Q] {
type CreatorFilesCountInterface interface {
LoadCountCreatorFiles(context.Context, bob.Executor, ...bob.Mod[*dialect.SelectQuery]) error
}
type CreatorFlyoverAerialServicesCountInterface interface {
LoadCountCreatorFlyoverAerialServices(context.Context, bob.Executor, ...bob.Mod[*dialect.SelectQuery]) error
}
type FileuploadPoolCountInterface interface {
LoadCountFileuploadPool(context.Context, bob.Executor, ...bob.Mod[*dialect.SelectQuery]) error
}
@ -3551,6 +3754,12 @@ func buildUserCountThenLoader[Q orm.Loadable]() userCountThenLoader[Q] {
return retrieved.LoadCountCreatorFiles(ctx, exec, mods...)
},
),
CreatorFlyoverAerialServices: countThenLoadBuilder[Q](
"CreatorFlyoverAerialServices",
func(ctx context.Context, exec bob.Executor, retrieved CreatorFlyoverAerialServicesCountInterface, mods ...bob.Mod[*dialect.SelectQuery]) error {
return retrieved.LoadCountCreatorFlyoverAerialServices(ctx, exec, mods...)
},
),
FileuploadPool: countThenLoadBuilder[Q](
"FileuploadPool",
func(ctx context.Context, exec bob.Executor, retrieved FileuploadPoolCountInterface, mods ...bob.Mod[*dialect.SelectQuery]) error {
@ -3728,6 +3937,36 @@ func (os UserSlice) LoadCountCreatorFiles(ctx context.Context, exec bob.Executor
return nil
}
// LoadCountCreatorFlyoverAerialServices loads the count of CreatorFlyoverAerialServices into the C struct
func (o *User) LoadCountCreatorFlyoverAerialServices(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
if o == nil {
return nil
}
count, err := o.CreatorFlyoverAerialServices(mods...).Count(ctx, exec)
if err != nil {
return err
}
o.C.CreatorFlyoverAerialServices = &count
return nil
}
// LoadCountCreatorFlyoverAerialServices loads the count of CreatorFlyoverAerialServices for a slice
func (os UserSlice) LoadCountCreatorFlyoverAerialServices(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
if len(os) == 0 {
return nil
}
for _, o := range os {
if err := o.LoadCountCreatorFlyoverAerialServices(ctx, exec, mods...); err != nil {
return err
}
}
return nil
}
// LoadCountFileuploadPool loads the count of FileuploadPool into the C struct
func (o *User) LoadCountFileuploadPool(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
if o == nil {
@ -4004,6 +4243,7 @@ type userJoins[Q dialect.Joinable] struct {
PublicUserUser modAs[Q, arcgisuserColumns]
CreatorComplianceReportRequests modAs[Q, complianceReportRequestColumns]
CreatorFiles modAs[Q, fileuploadFileColumns]
CreatorFlyoverAerialServices modAs[Q, fileuploadFlyoverAerialServiceColumns]
FileuploadPool modAs[Q, fileuploadPoolColumns]
CreatorNoteAudios modAs[Q, noteAudioColumns]
DeletorNoteAudios modAs[Q, noteAudioColumns]
@ -4079,6 +4319,20 @@ func buildUserJoins[Q dialect.Joinable](cols userColumns, typ string) userJoins[
return mods
},
},
CreatorFlyoverAerialServices: modAs[Q, fileuploadFlyoverAerialServiceColumns]{
c: FileuploadFlyoverAerialServices.Columns,
f: func(to fileuploadFlyoverAerialServiceColumns) bob.Mod[Q] {
mods := make(mods.QueryMods[Q], 0, 1)
{
mods = append(mods, dialect.Join[Q](typ, FileuploadFlyoverAerialServices.Name().As(to.Alias())).On(
to.CreatorID.EQ(cols.ID),
))
}
return mods
},
},
FileuploadPool: modAs[Q, fileuploadPoolColumns]{
c: FileuploadPools.Columns,
f: func(to fileuploadPoolColumns) bob.Mod[Q] {