Add new view for report counts and invalidated status

Also drop site.version from the primary key.
This commit is contained in:
Eli Ribble 2026-03-12 15:27:36 +00:00
parent 9525363bc8
commit 32dcc50c94
No known key found for this signature in database
23 changed files with 1656 additions and 623 deletions

View file

@ -1,45 +0,0 @@
package auth
import (
"context"
"strings"
"github.com/Gleipnir-Technology/nidus-sync/db/models"
"github.com/Gleipnir-Technology/nidus-sync/notification"
"github.com/Gleipnir-Technology/nidus-sync/platform"
)
func ContentForUser(ctx context.Context, user *models.User) (platform.User, error) {
notifications, err := notification.ForUser(ctx, user)
if err != nil {
return platform.User{}, err
}
org := user.R.Organization
var organization platform.Organization
if org != nil {
organization.ID = int32(org.ID)
organization.Name = org.Name
}
return platform.User{
DisplayName: user.DisplayName,
Initials: extractInitials(user.DisplayName),
Notifications: notifications,
Organization: organization,
Role: user.Role.String(),
Username: user.Username,
}, nil
}
func extractInitials(name string) string {
parts := strings.Fields(name)
var initials strings.Builder
for _, part := range parts {
if len(part) > 0 {
initials.WriteString(strings.ToUpper(string(part[0])))
}
}
return initials.String()
}

View file

@ -7,7 +7,7 @@ var SiteErrors = &siteErrors{
ErrUniqueSitePkey: &UniqueConstraintError{ ErrUniqueSitePkey: &UniqueConstraintError{
schema: "", schema: "",
table: "site", table: "site",
columns: []string{"id", "version"}, columns: []string{"id"},
s: "site_pkey", s: "site_pkey",
}, },
@ -17,10 +17,19 @@ var SiteErrors = &siteErrors{
columns: []string{"address_id"}, columns: []string{"address_id"},
s: "site_address_id_key", s: "site_address_id_key",
}, },
ErrUniqueSiteIdVersionUnique: &UniqueConstraintError{
schema: "",
table: "site",
columns: []string{"id", "version"},
s: "site_id_version_unique",
},
} }
type siteErrors struct { type siteErrors struct {
ErrUniqueSitePkey *UniqueConstraintError ErrUniqueSitePkey *UniqueConstraintError
ErrUniqueSiteAddressIdKey *UniqueConstraintError ErrUniqueSiteAddressIdKey *UniqueConstraintError
ErrUniqueSiteIdVersionUnique *UniqueConstraintError
} }

View file

@ -60,15 +60,6 @@ var Features = Table[
Generated: false, Generated: false,
AutoIncr: false, AutoIncr: false,
}, },
SiteVersion: column{
Name: "site_version",
DBType: "integer",
Default: "",
Comment: "",
Nullable: false,
Generated: false,
AutoIncr: false,
},
Location: column{ Location: column{
Name: "location", Name: "location",
DBType: "geometry", DBType: "geometry",
@ -122,14 +113,14 @@ var Features = Table[
ForeignTable: "organization", ForeignTable: "organization",
ForeignColumns: []string{"id"}, ForeignColumns: []string{"id"},
}, },
FeatureFeatureSiteIDSiteVersionFkey: foreignKey{ FeatureFeatureSiteIDFkey: foreignKey{
constraint: constraint{ constraint: constraint{
Name: "feature.feature_site_id_site_version_fkey", Name: "feature.feature_site_id_fkey",
Columns: []string{"site_id", "site_version"}, Columns: []string{"site_id"},
Comment: "", Comment: "",
}, },
ForeignTable: "site", ForeignTable: "site",
ForeignColumns: []string{"id", "version"}, ForeignColumns: []string{"id"},
}, },
}, },
@ -142,13 +133,12 @@ type featureColumns struct {
ID column ID column
OrganizationID column OrganizationID column
SiteID column SiteID column
SiteVersion column
Location column Location column
} }
func (c featureColumns) AsSlice() []column { func (c featureColumns) AsSlice() []column {
return []column{ return []column{
c.Created, c.CreatorID, c.ID, c.OrganizationID, c.SiteID, c.SiteVersion, c.Location, c.Created, c.CreatorID, c.ID, c.OrganizationID, c.SiteID, c.Location,
} }
} }
@ -163,14 +153,14 @@ func (i featureIndexes) AsSlice() []index {
} }
type featureForeignKeys struct { type featureForeignKeys struct {
FeatureFeatureCreatorIDFkey foreignKey FeatureFeatureCreatorIDFkey foreignKey
FeatureFeatureOrganizationIDFkey foreignKey FeatureFeatureOrganizationIDFkey foreignKey
FeatureFeatureSiteIDSiteVersionFkey foreignKey FeatureFeatureSiteIDFkey foreignKey
} }
func (f featureForeignKeys) AsSlice() []foreignKey { func (f featureForeignKeys) AsSlice() []foreignKey {
return []foreignKey{ return []foreignKey{
f.FeatureFeatureCreatorIDFkey, f.FeatureFeatureOrganizationIDFkey, f.FeatureFeatureSiteIDSiteVersionFkey, f.FeatureFeatureCreatorIDFkey, f.FeatureFeatureOrganizationIDFkey, f.FeatureFeatureSiteIDFkey,
} }
} }

View file

@ -60,15 +60,6 @@ var Leads = Table[
Generated: false, Generated: false,
AutoIncr: false, AutoIncr: false,
}, },
SiteVersion: column{
Name: "site_version",
DBType: "integer",
Default: "NULL",
Comment: "",
Nullable: true,
Generated: false,
AutoIncr: false,
},
Type: column{ Type: column{
Name: "type_", Name: "type_",
DBType: "public.leadtype", DBType: "public.leadtype",
@ -122,14 +113,14 @@ var Leads = Table[
ForeignTable: "organization", ForeignTable: "organization",
ForeignColumns: []string{"id"}, ForeignColumns: []string{"id"},
}, },
LeadLeadSiteIDSiteVersionFkey: foreignKey{ LeadLeadSiteIDFkey: foreignKey{
constraint: constraint{ constraint: constraint{
Name: "lead.lead_site_id_site_version_fkey", Name: "lead.lead_site_id_fkey",
Columns: []string{"site_id", "site_version"}, Columns: []string{"site_id"},
Comment: "", Comment: "",
}, },
ForeignTable: "site", ForeignTable: "site",
ForeignColumns: []string{"id", "version"}, ForeignColumns: []string{"id"},
}, },
}, },
@ -142,13 +133,12 @@ type leadColumns struct {
ID column ID column
OrganizationID column OrganizationID column
SiteID column SiteID column
SiteVersion column
Type column Type column
} }
func (c leadColumns) AsSlice() []column { func (c leadColumns) AsSlice() []column {
return []column{ return []column{
c.Created, c.Creator, c.ID, c.OrganizationID, c.SiteID, c.SiteVersion, c.Type, c.Created, c.Creator, c.ID, c.OrganizationID, c.SiteID, c.Type,
} }
} }
@ -163,14 +153,14 @@ func (i leadIndexes) AsSlice() []index {
} }
type leadForeignKeys struct { type leadForeignKeys struct {
LeadLeadCreatorFkey foreignKey LeadLeadCreatorFkey foreignKey
LeadLeadOrganizationIDFkey foreignKey LeadLeadOrganizationIDFkey foreignKey
LeadLeadSiteIDSiteVersionFkey foreignKey LeadLeadSiteIDFkey foreignKey
} }
func (f leadForeignKeys) AsSlice() []foreignKey { func (f leadForeignKeys) AsSlice() []foreignKey {
return []foreignKey{ return []foreignKey{
f.LeadLeadCreatorFkey, f.LeadLeadOrganizationIDFkey, f.LeadLeadSiteIDSiteVersionFkey, f.LeadLeadCreatorFkey, f.LeadLeadOrganizationIDFkey, f.LeadLeadSiteIDFkey,
} }
} }

View file

@ -348,6 +348,24 @@ var PublicreportNuisances = Table[
Generated: false, Generated: false,
AutoIncr: false, AutoIncr: false,
}, },
Reviewed: column{
Name: "reviewed",
DBType: "timestamp without time zone",
Default: "NULL",
Comment: "",
Nullable: true,
Generated: false,
AutoIncr: false,
},
ReviewerID: column{
Name: "reviewer_id",
DBType: "integer",
Default: "NULL",
Comment: "",
Nullable: true,
Generated: false,
AutoIncr: false,
},
}, },
Indexes: publicreportNuisanceIndexes{ Indexes: publicreportNuisanceIndexes{
NuisancePkey: index{ NuisancePkey: index{
@ -409,6 +427,15 @@ var PublicreportNuisances = Table[
ForeignTable: "organization", ForeignTable: "organization",
ForeignColumns: []string{"id"}, ForeignColumns: []string{"id"},
}, },
PublicreportNuisanceNuisanceReviewerIDFkey: foreignKey{
constraint: constraint{
Name: "publicreport.nuisance.nuisance_reviewer_id_fkey",
Columns: []string{"reviewer_id"},
Comment: "",
},
ForeignTable: "user_",
ForeignColumns: []string{"id"},
},
}, },
Uniques: publicreportNuisanceUniques{ Uniques: publicreportNuisanceUniques{
NuisancePublicIDKey: constraint{ NuisancePublicIDKey: constraint{
@ -459,11 +486,13 @@ type publicreportNuisanceColumns struct {
Location column Location column
AddressNumber column AddressNumber column
AddressID column AddressID column
Reviewed column
ReviewerID column
} }
func (c publicreportNuisanceColumns) AsSlice() []column { func (c publicreportNuisanceColumns) AsSlice() []column {
return []column{ return []column{
c.ID, c.AdditionalInfo, c.Created, c.Duration, c.SourceContainer, c.SourceDescription, c.SourceStagnant, c.PublicID, c.ReporterEmail, c.ReporterName, c.ReporterPhone, c.AddressRaw, c.Status, c.OrganizationID, c.SourceGutter, c.H3cell, c.AddressCountry, c.AddressLocality, c.AddressPostalCode, c.AddressRegion, c.AddressStreet, c.IsLocationBackyard, c.IsLocationFrontyard, c.IsLocationGarden, c.IsLocationOther, c.IsLocationPool, c.MapZoom, c.TodEarly, c.TodDay, c.TodEvening, c.TodNight, c.LatlngAccuracyType, c.LatlngAccuracyValue, c.ReporterContactConsent, c.Location, c.AddressNumber, c.AddressID, c.ID, c.AdditionalInfo, c.Created, c.Duration, c.SourceContainer, c.SourceDescription, c.SourceStagnant, c.PublicID, c.ReporterEmail, c.ReporterName, c.ReporterPhone, c.AddressRaw, c.Status, c.OrganizationID, c.SourceGutter, c.H3cell, c.AddressCountry, c.AddressLocality, c.AddressPostalCode, c.AddressRegion, c.AddressStreet, c.IsLocationBackyard, c.IsLocationFrontyard, c.IsLocationGarden, c.IsLocationOther, c.IsLocationPool, c.MapZoom, c.TodEarly, c.TodDay, c.TodEvening, c.TodNight, c.LatlngAccuracyType, c.LatlngAccuracyValue, c.ReporterContactConsent, c.Location, c.AddressNumber, c.AddressID, c.Reviewed, c.ReviewerID,
} }
} }
@ -481,11 +510,12 @@ func (i publicreportNuisanceIndexes) AsSlice() []index {
type publicreportNuisanceForeignKeys struct { type publicreportNuisanceForeignKeys struct {
PublicreportNuisanceNuisanceAddressIDFkey foreignKey PublicreportNuisanceNuisanceAddressIDFkey foreignKey
PublicreportNuisanceNuisanceOrganizationIDFkey foreignKey PublicreportNuisanceNuisanceOrganizationIDFkey foreignKey
PublicreportNuisanceNuisanceReviewerIDFkey foreignKey
} }
func (f publicreportNuisanceForeignKeys) AsSlice() []foreignKey { func (f publicreportNuisanceForeignKeys) AsSlice() []foreignKey {
return []foreignKey{ return []foreignKey{
f.PublicreportNuisanceNuisanceAddressIDFkey, f.PublicreportNuisanceNuisanceOrganizationIDFkey, f.PublicreportNuisanceNuisanceAddressIDFkey, f.PublicreportNuisanceNuisanceOrganizationIDFkey, f.PublicreportNuisanceNuisanceReviewerIDFkey,
} }
} }

View file

@ -0,0 +1,162 @@
// 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
var PublicreportOrganizationReportCounts = Table[
publicreportOrganizationReportCountColumns,
publicreportOrganizationReportCountIndexes,
publicreportOrganizationReportCountForeignKeys,
publicreportOrganizationReportCountUniques,
publicreportOrganizationReportCountChecks,
]{
Schema: "publicreport",
Name: "organization_report_count",
Columns: publicreportOrganizationReportCountColumns{
OrganizationID: column{
Name: "organization_id",
DBType: "integer",
Default: "NULL",
Comment: "",
Nullable: true,
Generated: false,
AutoIncr: false,
},
NuisanceReported: column{
Name: "nuisance_reported",
DBType: "bigint",
Default: "NULL",
Comment: "",
Nullable: true,
Generated: false,
AutoIncr: false,
},
NuisanceReviewed: column{
Name: "nuisance_reviewed",
DBType: "bigint",
Default: "NULL",
Comment: "",
Nullable: true,
Generated: false,
AutoIncr: false,
},
NuisanceScheduled: column{
Name: "nuisance_scheduled",
DBType: "bigint",
Default: "NULL",
Comment: "",
Nullable: true,
Generated: false,
AutoIncr: false,
},
NuisanceTreated: column{
Name: "nuisance_treated",
DBType: "bigint",
Default: "NULL",
Comment: "",
Nullable: true,
Generated: false,
AutoIncr: false,
},
NuisanceInvalidated: column{
Name: "nuisance_invalidated",
DBType: "bigint",
Default: "NULL",
Comment: "",
Nullable: true,
Generated: false,
AutoIncr: false,
},
WaterReported: column{
Name: "water_reported",
DBType: "bigint",
Default: "NULL",
Comment: "",
Nullable: true,
Generated: false,
AutoIncr: false,
},
WaterReviewed: column{
Name: "water_reviewed",
DBType: "bigint",
Default: "NULL",
Comment: "",
Nullable: true,
Generated: false,
AutoIncr: false,
},
WaterScheduled: column{
Name: "water_scheduled",
DBType: "bigint",
Default: "NULL",
Comment: "",
Nullable: true,
Generated: false,
AutoIncr: false,
},
WaterTreated: column{
Name: "water_treated",
DBType: "bigint",
Default: "NULL",
Comment: "",
Nullable: true,
Generated: false,
AutoIncr: false,
},
WaterInvalidated: column{
Name: "water_invalidated",
DBType: "bigint",
Default: "NULL",
Comment: "",
Nullable: true,
Generated: false,
AutoIncr: false,
},
},
Comment: "",
}
type publicreportOrganizationReportCountColumns struct {
OrganizationID column
NuisanceReported column
NuisanceReviewed column
NuisanceScheduled column
NuisanceTreated column
NuisanceInvalidated column
WaterReported column
WaterReviewed column
WaterScheduled column
WaterTreated column
WaterInvalidated column
}
func (c publicreportOrganizationReportCountColumns) AsSlice() []column {
return []column{
c.OrganizationID, c.NuisanceReported, c.NuisanceReviewed, c.NuisanceScheduled, c.NuisanceTreated, c.NuisanceInvalidated, c.WaterReported, c.WaterReviewed, c.WaterScheduled, c.WaterTreated, c.WaterInvalidated,
}
}
type publicreportOrganizationReportCountIndexes struct{}
func (i publicreportOrganizationReportCountIndexes) AsSlice() []index {
return []index{}
}
type publicreportOrganizationReportCountForeignKeys struct{}
func (f publicreportOrganizationReportCountForeignKeys) AsSlice() []foreignKey {
return []foreignKey{}
}
type publicreportOrganizationReportCountUniques struct{}
func (u publicreportOrganizationReportCountUniques) AsSlice() []constraint {
return []constraint{}
}
type publicreportOrganizationReportCountChecks struct{}
func (c publicreportOrganizationReportCountChecks) AsSlice() []check {
return []check{}
}

View file

@ -339,6 +339,24 @@ var PublicreportWaters = Table[
Generated: false, Generated: false,
AutoIncr: false, AutoIncr: false,
}, },
Reviewed: column{
Name: "reviewed",
DBType: "timestamp without time zone",
Default: "NULL",
Comment: "",
Nullable: true,
Generated: false,
AutoIncr: false,
},
ReviewerID: column{
Name: "reviewer_id",
DBType: "integer",
Default: "NULL",
Comment: "",
Nullable: true,
Generated: false,
AutoIncr: false,
},
}, },
Indexes: publicreportWaterIndexes{ Indexes: publicreportWaterIndexes{
PoolPkey: index{ PoolPkey: index{
@ -400,6 +418,15 @@ var PublicreportWaters = Table[
ForeignTable: "organization", ForeignTable: "organization",
ForeignColumns: []string{"id"}, ForeignColumns: []string{"id"},
}, },
PublicreportWaterWaterReviewerIDFkey: foreignKey{
constraint: constraint{
Name: "publicreport.water.water_reviewer_id_fkey",
Columns: []string{"reviewer_id"},
Comment: "",
},
ForeignTable: "user_",
ForeignColumns: []string{"id"},
},
}, },
Uniques: publicreportWaterUniques{ Uniques: publicreportWaterUniques{
PoolPublicIDKey: constraint{ PoolPublicIDKey: constraint{
@ -449,11 +476,13 @@ type publicreportWaterColumns struct {
Location column Location column
AddressNumber column AddressNumber column
AddressID column AddressID column
Reviewed column
ReviewerID column
} }
func (c publicreportWaterColumns) AsSlice() []column { func (c publicreportWaterColumns) AsSlice() []column {
return []column{ return []column{
c.ID, c.AccessComments, c.AccessGate, c.AccessFence, c.AccessLocked, c.AccessDog, c.AccessOther, c.AddressRaw, c.AddressCountry, c.AddressPostalCode, c.AddressLocality, c.AddressStreet, c.AddressRegion, c.Comments, c.Created, c.H3cell, c.HasAdult, c.HasLarvae, c.HasPupae, c.MapZoom, c.OwnerEmail, c.OwnerName, c.OwnerPhone, c.PublicID, c.ReporterEmail, c.ReporterName, c.ReporterPhone, c.Status, c.OrganizationID, c.HasBackyardPermission, c.IsReporterConfidential, c.IsReporterOwner, c.ReporterContactConsent, c.Location, c.AddressNumber, c.AddressID, c.ID, c.AccessComments, c.AccessGate, c.AccessFence, c.AccessLocked, c.AccessDog, c.AccessOther, c.AddressRaw, c.AddressCountry, c.AddressPostalCode, c.AddressLocality, c.AddressStreet, c.AddressRegion, c.Comments, c.Created, c.H3cell, c.HasAdult, c.HasLarvae, c.HasPupae, c.MapZoom, c.OwnerEmail, c.OwnerName, c.OwnerPhone, c.PublicID, c.ReporterEmail, c.ReporterName, c.ReporterPhone, c.Status, c.OrganizationID, c.HasBackyardPermission, c.IsReporterConfidential, c.IsReporterOwner, c.ReporterContactConsent, c.Location, c.AddressNumber, c.AddressID, c.Reviewed, c.ReviewerID,
} }
} }
@ -471,11 +500,12 @@ func (i publicreportWaterIndexes) AsSlice() []index {
type publicreportWaterForeignKeys struct { type publicreportWaterForeignKeys struct {
PublicreportWaterPoolAddressIDFkey foreignKey PublicreportWaterPoolAddressIDFkey foreignKey
PublicreportWaterPoolOrganizationIDFkey foreignKey PublicreportWaterPoolOrganizationIDFkey foreignKey
PublicreportWaterWaterReviewerIDFkey foreignKey
} }
func (f publicreportWaterForeignKeys) AsSlice() []foreignKey { func (f publicreportWaterForeignKeys) AsSlice() []foreignKey {
return []foreignKey{ return []foreignKey{
f.PublicreportWaterPoolAddressIDFkey, f.PublicreportWaterPoolOrganizationIDFkey, f.PublicreportWaterPoolAddressIDFkey, f.PublicreportWaterPoolOrganizationIDFkey, f.PublicreportWaterWaterReviewerIDFkey,
} }
} }

View file

@ -78,15 +78,6 @@ var Residents = Table[
Generated: false, Generated: false,
AutoIncr: false, AutoIncr: false,
}, },
SiteVersion: column{
Name: "site_version",
DBType: "integer",
Default: "",
Comment: "",
Nullable: false,
Generated: false,
AutoIncr: false,
},
}, },
Indexes: residentIndexes{ Indexes: residentIndexes{
ResidentPkey: index{ ResidentPkey: index{
@ -140,14 +131,14 @@ var Residents = Table[
ForeignTable: "comms.phone", ForeignTable: "comms.phone",
ForeignColumns: []string{"e164"}, ForeignColumns: []string{"e164"},
}, },
ResidentResidentSiteIDSiteVersionFkey: foreignKey{ ResidentResidentSiteIDFkey: foreignKey{
constraint: constraint{ constraint: constraint{
Name: "resident.resident_site_id_site_version_fkey", Name: "resident.resident_site_id_fkey",
Columns: []string{"site_id", "site_version"}, Columns: []string{"site_id"},
Comment: "", Comment: "",
}, },
ForeignTable: "site", ForeignTable: "site",
ForeignColumns: []string{"id", "version"}, ForeignColumns: []string{"id"},
}, },
}, },
@ -162,12 +153,11 @@ type residentColumns struct {
Name column Name column
PhoneMobile column PhoneMobile column
SiteID column SiteID column
SiteVersion column
} }
func (c residentColumns) AsSlice() []column { func (c residentColumns) AsSlice() []column {
return []column{ return []column{
c.AddressID, c.Created, c.Creator, c.ID, c.Name, c.PhoneMobile, c.SiteID, c.SiteVersion, c.AddressID, c.Created, c.Creator, c.ID, c.Name, c.PhoneMobile, c.SiteID,
} }
} }
@ -182,15 +172,15 @@ func (i residentIndexes) AsSlice() []index {
} }
type residentForeignKeys struct { type residentForeignKeys struct {
ResidentResidentAddressIDFkey foreignKey ResidentResidentAddressIDFkey foreignKey
ResidentResidentCreatorFkey foreignKey ResidentResidentCreatorFkey foreignKey
ResidentResidentPhoneMobileFkey foreignKey ResidentResidentPhoneMobileFkey foreignKey
ResidentResidentSiteIDSiteVersionFkey foreignKey ResidentResidentSiteIDFkey foreignKey
} }
func (f residentForeignKeys) AsSlice() []foreignKey { func (f residentForeignKeys) AsSlice() []foreignKey {
return []foreignKey{ return []foreignKey{
f.ResidentResidentAddressIDFkey, f.ResidentResidentCreatorFkey, f.ResidentResidentPhoneMobileFkey, f.ResidentResidentSiteIDSiteVersionFkey, f.ResidentResidentAddressIDFkey, f.ResidentResidentCreatorFkey, f.ResidentResidentPhoneMobileFkey, f.ResidentResidentSiteIDFkey,
} }
} }

View file

@ -143,15 +143,10 @@ var Sites = Table[
Desc: null.FromCond(false, true), Desc: null.FromCond(false, true),
IsExpression: false, IsExpression: false,
}, },
{
Name: "version",
Desc: null.FromCond(false, true),
IsExpression: false,
},
}, },
Unique: true, Unique: true,
Comment: "", Comment: "",
NullsFirst: []bool{false, false}, NullsFirst: []bool{false},
NullsDistinct: false, NullsDistinct: false,
Where: "", Where: "",
Include: []string{}, Include: []string{},
@ -173,10 +168,32 @@ var Sites = Table[
Where: "", Where: "",
Include: []string{}, Include: []string{},
}, },
SiteIDVersionUnique: index{
Type: "btree",
Name: "site_id_version_unique",
Columns: []indexColumn{
{
Name: "id",
Desc: null.FromCond(false, true),
IsExpression: false,
},
{
Name: "version",
Desc: null.FromCond(false, true),
IsExpression: false,
},
},
Unique: true,
Comment: "",
NullsFirst: []bool{false, false},
NullsDistinct: false,
Where: "",
Include: []string{},
},
}, },
PrimaryKey: &constraint{ PrimaryKey: &constraint{
Name: "site_pkey", Name: "site_pkey",
Columns: []string{"id", "version"}, Columns: []string{"id"},
Comment: "", Comment: "",
}, },
ForeignKeys: siteForeignKeys{ ForeignKeys: siteForeignKeys{
@ -223,6 +240,11 @@ var Sites = Table[
Columns: []string{"address_id"}, Columns: []string{"address_id"},
Comment: "", Comment: "",
}, },
SiteIDVersionUnique: constraint{
Name: "site_id_version_unique",
Columns: []string{"id", "version"},
Comment: "",
},
}, },
Comment: "", Comment: "",
@ -251,13 +273,14 @@ func (c siteColumns) AsSlice() []column {
} }
type siteIndexes struct { type siteIndexes struct {
SitePkey index SitePkey index
SiteAddressIDKey index SiteAddressIDKey index
SiteIDVersionUnique index
} }
func (i siteIndexes) AsSlice() []index { func (i siteIndexes) AsSlice() []index {
return []index{ return []index{
i.SitePkey, i.SiteAddressIDKey, i.SitePkey, i.SiteAddressIDKey, i.SiteIDVersionUnique,
} }
} }
@ -275,12 +298,13 @@ func (f siteForeignKeys) AsSlice() []foreignKey {
} }
type siteUniques struct { type siteUniques struct {
SiteAddressIDKey constraint SiteAddressIDKey constraint
SiteIDVersionUnique constraint
} }
func (u siteUniques) AsSlice() []constraint { func (u siteUniques) AsSlice() []constraint {
return []constraint{ return []constraint{
u.SiteAddressIDKey, u.SiteAddressIDKey, u.SiteIDVersionUnique,
} }
} }

View file

@ -1868,10 +1868,11 @@ func (e *PublicreportPoolsourceduration) Scan(value any) error {
// Enum values for PublicreportReportstatustype // Enum values for PublicreportReportstatustype
const ( const (
PublicreportReportstatustypeReported PublicreportReportstatustype = "reported" PublicreportReportstatustypeReported PublicreportReportstatustype = "reported"
PublicreportReportstatustypeReviewed PublicreportReportstatustype = "reviewed" PublicreportReportstatustypeReviewed PublicreportReportstatustype = "reviewed"
PublicreportReportstatustypeScheduled PublicreportReportstatustype = "scheduled" PublicreportReportstatustypeScheduled PublicreportReportstatustype = "scheduled"
PublicreportReportstatustypeTreated PublicreportReportstatustype = "treated" PublicreportReportstatustypeTreated PublicreportReportstatustype = "treated"
PublicreportReportstatustypeInvalidated PublicreportReportstatustype = "invalidated"
) )
func AllPublicreportReportstatustype() []PublicreportReportstatustype { func AllPublicreportReportstatustype() []PublicreportReportstatustype {
@ -1880,6 +1881,7 @@ func AllPublicreportReportstatustype() []PublicreportReportstatustype {
PublicreportReportstatustypeReviewed, PublicreportReportstatustypeReviewed,
PublicreportReportstatustypeScheduled, PublicreportReportstatustypeScheduled,
PublicreportReportstatustypeTreated, PublicreportReportstatustypeTreated,
PublicreportReportstatustypeInvalidated,
} }
} }
@ -1894,7 +1896,8 @@ func (e PublicreportReportstatustype) Valid() bool {
case PublicreportReportstatustypeReported, case PublicreportReportstatustypeReported,
PublicreportReportstatustypeReviewed, PublicreportReportstatustypeReviewed,
PublicreportReportstatustypeScheduled, PublicreportReportstatustypeScheduled,
PublicreportReportstatustypeTreated: PublicreportReportstatustypeTreated,
PublicreportReportstatustypeInvalidated:
return true return true
default: default:
return false return false

View file

@ -0,0 +1,36 @@
-- +goose Up
-- Step 1: Drop foreign key constraints that reference the composite primary key
ALTER TABLE feature DROP CONSTRAINT feature_site_id_site_version_fkey;
ALTER TABLE lead DROP CONSTRAINT lead_site_id_site_version_fkey;
ALTER TABLE resident DROP CONSTRAINT resident_site_id_site_version_fkey;
-- Step 2: Drop the existing composite primary key
ALTER TABLE site DROP CONSTRAINT site_pkey;
-- Step 3: Create new primary key on just the id column
ALTER TABLE site ADD PRIMARY KEY (id);
-- Step 4: Create a unique constraint on (id, version) to maintain uniqueness
ALTER TABLE site ADD CONSTRAINT site_id_version_unique UNIQUE (id, version);
-- Step 5: Recreate the foreign key constraints
ALTER TABLE feature
ADD CONSTRAINT feature_site_id_fkey
FOREIGN KEY (site_id)
REFERENCES site(id);
ALTER TABLE feature
DROP COLUMN site_version;
ALTER TABLE lead
ADD CONSTRAINT lead_site_id_fkey
FOREIGN KEY (site_id)
REFERENCES site(id);
ALTER TABLE lead
DROP COLUMN site_version;
ALTER TABLE resident
ADD CONSTRAINT resident_site_id_fkey
FOREIGN KEY (site_id)
REFERENCES site(id);
ALTER TABLE resident
DROP COLUMN site_version;

View file

@ -0,0 +1,3 @@
-- +goose Up
ALTER TYPE publicreport.ReportStatusType ADD VALUE 'invalidated' AFTER 'treated';
-- +goose Down

View file

@ -0,0 +1,30 @@
-- +goose Up
ALTER TABLE publicreport.nuisance ADD COLUMN reviewed TIMESTAMP WITHOUT TIME ZONE;
ALTER TABLE publicreport.nuisance ADD COLUMN reviewer_id INTEGER REFERENCES user_(id);
ALTER TABLE publicreport.water ADD COLUMN reviewed TIMESTAMP WITHOUT TIME ZONE;
ALTER TABLE publicreport.water ADD COLUMN reviewer_id INTEGER REFERENCES user_(id);
CREATE VIEW publicreport.organization_report_count AS
SELECT
o.id AS organization_id,
COUNT(n.id) FILTER (WHERE n.status = 'reported') AS nuisance_reported,
COUNT(n.id) FILTER (WHERE n.status = 'reviewed') AS nuisance_reviewed,
COUNT(n.id) FILTER (WHERE n.status = 'scheduled') AS nuisance_scheduled,
COUNT(n.id) FILTER (WHERE n.status = 'treated') AS nuisance_treated,
COUNT(n.id) FILTER (WHERE n.status = 'invalidated') AS nuisance_invalidated,
COUNT(w.id) FILTER (WHERE w.status = 'reported') AS water_reported,
COUNT(w.id) FILTER (WHERE w.status = 'reviewed') AS water_reviewed,
COUNT(w.id) FILTER (WHERE w.status = 'scheduled') AS water_scheduled,
COUNT(w.id) FILTER (WHERE w.status = 'treated') AS water_treated,
COUNT(w.id) FILTER (WHERE w.status = 'invalidated') AS water_invalidated
FROM organization o
LEFT JOIN publicreport.nuisance n ON o.id = n.organization_id
LEFT JOIN publicreport.water w ON o.id = w.organization_id
GROUP BY o.id;
-- +goose Down
DROP VIEW publicreport.organization_report_count;
ALTER TABLE publicreport.water DROP COLUMN reviewer_id;
ALTER TABLE publicreport.water DROP COLUMN reviewed;
ALTER TABLE publicreport.nuisance DROP COLUMN reviewer_id;
ALTER TABLE publicreport.nuisance DROP COLUMN reviewed;

View file

@ -17,293 +17,296 @@ var (
) )
func Where[Q psql.Filterable]() struct { func Where[Q psql.Filterable]() struct {
Addresses addressWhere[Q] Addresses addressWhere[Q]
ArcgisAccounts arcgisAccountWhere[Q] ArcgisAccounts arcgisAccountWhere[Q]
ArcgisAddressMappings arcgisAddressMappingWhere[Q] ArcgisAddressMappings arcgisAddressMappingWhere[Q]
ArcgisLayers arcgisLayerWhere[Q] ArcgisLayers arcgisLayerWhere[Q]
ArcgisLayerFields arcgisLayerFieldWhere[Q] ArcgisLayerFields arcgisLayerFieldWhere[Q]
ArcgisOauthTokens arcgisOauthTokenWhere[Q] ArcgisOauthTokens arcgisOauthTokenWhere[Q]
ArcgisParcelMappings arcgisParcelMappingWhere[Q] ArcgisParcelMappings arcgisParcelMappingWhere[Q]
ArcgisServiceFeatures arcgisServiceFeatureWhere[Q] ArcgisServiceFeatures arcgisServiceFeatureWhere[Q]
ArcgisServiceMaps arcgisServiceMapWhere[Q] ArcgisServiceMaps arcgisServiceMapWhere[Q]
ArcgisUsers arcgisuserWhere[Q] ArcgisUsers arcgisuserWhere[Q]
ArcgisUserPrivileges arcgisUserPrivilegeWhere[Q] ArcgisUserPrivileges arcgisUserPrivilegeWhere[Q]
CommsEmailContacts commsEmailContactWhere[Q] CommsEmailContacts commsEmailContactWhere[Q]
CommsEmailLogs commsEmailLogWhere[Q] CommsEmailLogs commsEmailLogWhere[Q]
CommsEmailTemplates commsEmailTemplateWhere[Q] CommsEmailTemplates commsEmailTemplateWhere[Q]
CommsMailers commsMailerWhere[Q] CommsMailers commsMailerWhere[Q]
CommsPhones commsPhoneWhere[Q] CommsPhones commsPhoneWhere[Q]
CommsTextJobs commsTextJobWhere[Q] CommsTextJobs commsTextJobWhere[Q]
CommsTextLogs commsTextLogWhere[Q] CommsTextLogs commsTextLogWhere[Q]
ComplianceReportRequests complianceReportRequestWhere[Q] ComplianceReportRequests complianceReportRequestWhere[Q]
ComplianceReportRequestMailers complianceReportRequestMailerWhere[Q] ComplianceReportRequestMailers complianceReportRequestMailerWhere[Q]
DistrictSubscriptionEmails districtSubscriptionEmailWhere[Q] DistrictSubscriptionEmails districtSubscriptionEmailWhere[Q]
DistrictSubscriptionPhones districtSubscriptionPhoneWhere[Q] DistrictSubscriptionPhones districtSubscriptionPhoneWhere[Q]
Features featureWhere[Q] Features featureWhere[Q]
FeaturePools featurePoolWhere[Q] FeaturePools featurePoolWhere[Q]
FieldseekerContainerrelates fieldseekerContainerrelateWhere[Q] FieldseekerContainerrelates fieldseekerContainerrelateWhere[Q]
FieldseekerFieldscoutinglogs fieldseekerFieldscoutinglogWhere[Q] FieldseekerFieldscoutinglogs fieldseekerFieldscoutinglogWhere[Q]
FieldseekerHabitatrelates fieldseekerHabitatrelateWhere[Q] FieldseekerHabitatrelates fieldseekerHabitatrelateWhere[Q]
FieldseekerInspectionsamples fieldseekerInspectionsampleWhere[Q] FieldseekerInspectionsamples fieldseekerInspectionsampleWhere[Q]
FieldseekerInspectionsampledetails fieldseekerInspectionsampledetailWhere[Q] FieldseekerInspectionsampledetails fieldseekerInspectionsampledetailWhere[Q]
FieldseekerLinelocations fieldseekerLinelocationWhere[Q] FieldseekerLinelocations fieldseekerLinelocationWhere[Q]
FieldseekerLocationtrackings fieldseekerLocationtrackingWhere[Q] FieldseekerLocationtrackings fieldseekerLocationtrackingWhere[Q]
FieldseekerMosquitoinspections fieldseekerMosquitoinspectionWhere[Q] FieldseekerMosquitoinspections fieldseekerMosquitoinspectionWhere[Q]
FieldseekerPointlocations fieldseekerPointlocationWhere[Q] FieldseekerPointlocations fieldseekerPointlocationWhere[Q]
FieldseekerPolygonlocations fieldseekerPolygonlocationWhere[Q] FieldseekerPolygonlocations fieldseekerPolygonlocationWhere[Q]
FieldseekerPools fieldseekerPoolWhere[Q] FieldseekerPools fieldseekerPoolWhere[Q]
FieldseekerPooldetails fieldseekerPooldetailWhere[Q] FieldseekerPooldetails fieldseekerPooldetailWhere[Q]
FieldseekerProposedtreatmentareas fieldseekerProposedtreatmentareaWhere[Q] FieldseekerProposedtreatmentareas fieldseekerProposedtreatmentareaWhere[Q]
FieldseekerQamosquitoinspections fieldseekerQamosquitoinspectionWhere[Q] FieldseekerQamosquitoinspections fieldseekerQamosquitoinspectionWhere[Q]
FieldseekerRodentlocations fieldseekerRodentlocationWhere[Q] FieldseekerRodentlocations fieldseekerRodentlocationWhere[Q]
FieldseekerSamplecollections fieldseekerSamplecollectionWhere[Q] FieldseekerSamplecollections fieldseekerSamplecollectionWhere[Q]
FieldseekerSamplelocations fieldseekerSamplelocationWhere[Q] FieldseekerSamplelocations fieldseekerSamplelocationWhere[Q]
FieldseekerServicerequests fieldseekerServicerequestWhere[Q] FieldseekerServicerequests fieldseekerServicerequestWhere[Q]
FieldseekerSpeciesabundances fieldseekerSpeciesabundanceWhere[Q] FieldseekerSpeciesabundances fieldseekerSpeciesabundanceWhere[Q]
FieldseekerStormdrains fieldseekerStormdrainWhere[Q] FieldseekerStormdrains fieldseekerStormdrainWhere[Q]
FieldseekerTimecards fieldseekerTimecardWhere[Q] FieldseekerTimecards fieldseekerTimecardWhere[Q]
FieldseekerTrapdata fieldseekerTrapdatumWhere[Q] FieldseekerTrapdata fieldseekerTrapdatumWhere[Q]
FieldseekerTraplocations fieldseekerTraplocationWhere[Q] FieldseekerTraplocations fieldseekerTraplocationWhere[Q]
FieldseekerTreatments fieldseekerTreatmentWhere[Q] FieldseekerTreatments fieldseekerTreatmentWhere[Q]
FieldseekerTreatmentareas fieldseekerTreatmentareaWhere[Q] FieldseekerTreatmentareas fieldseekerTreatmentareaWhere[Q]
FieldseekerZones fieldseekerZoneWhere[Q] FieldseekerZones fieldseekerZoneWhere[Q]
FieldseekerZones2s fieldseekerZones2Where[Q] FieldseekerZones2s fieldseekerZones2Where[Q]
FieldseekerSyncs fieldseekerSyncWhere[Q] FieldseekerSyncs fieldseekerSyncWhere[Q]
FileuploadCSVS fileuploadCSVWhere[Q] FileuploadCSVS fileuploadCSVWhere[Q]
FileuploadErrorCSVS fileuploadErrorCSVWhere[Q] FileuploadErrorCSVS fileuploadErrorCSVWhere[Q]
FileuploadErrorFiles fileuploadErrorFileWhere[Q] FileuploadErrorFiles fileuploadErrorFileWhere[Q]
FileuploadFiles fileuploadFileWhere[Q] FileuploadFiles fileuploadFileWhere[Q]
FileuploadPools fileuploadPoolWhere[Q] FileuploadPools fileuploadPoolWhere[Q]
GeographyColumns geographyColumnWhere[Q] GeographyColumns geographyColumnWhere[Q]
GeometryColumns geometryColumnWhere[Q] GeometryColumns geometryColumnWhere[Q]
GooseDBVersions gooseDBVersionWhere[Q] GooseDBVersions gooseDBVersionWhere[Q]
H3Aggregations h3AggregationWhere[Q] H3Aggregations h3AggregationWhere[Q]
Leads leadWhere[Q] Leads leadWhere[Q]
NoteAudios noteAudioWhere[Q] NoteAudios noteAudioWhere[Q]
NoteAudioBreadcrumbs noteAudioBreadcrumbWhere[Q] NoteAudioBreadcrumbs noteAudioBreadcrumbWhere[Q]
NoteAudioData noteAudioDatumWhere[Q] NoteAudioData noteAudioDatumWhere[Q]
NoteImages noteImageWhere[Q] NoteImages noteImageWhere[Q]
NoteImageBreadcrumbs noteImageBreadcrumbWhere[Q] NoteImageBreadcrumbs noteImageBreadcrumbWhere[Q]
NoteImageData noteImageDatumWhere[Q] NoteImageData noteImageDatumWhere[Q]
Notifications notificationWhere[Q] Notifications notificationWhere[Q]
Organizations organizationWhere[Q] Organizations organizationWhere[Q]
Parcels parcelWhere[Q] Parcels parcelWhere[Q]
PublicreportImages publicreportImageWhere[Q] PublicreportImages publicreportImageWhere[Q]
PublicreportImageExifs publicreportImageExifWhere[Q] PublicreportImageExifs publicreportImageExifWhere[Q]
PublicreportNotifyEmailNuisances publicreportNotifyEmailNuisanceWhere[Q] PublicreportNotifyEmailNuisances publicreportNotifyEmailNuisanceWhere[Q]
PublicreportNotifyEmailWaters publicreportNotifyEmailWaterWhere[Q] PublicreportNotifyEmailWaters publicreportNotifyEmailWaterWhere[Q]
PublicreportNotifyPhoneNuisances publicreportNotifyPhoneNuisanceWhere[Q] PublicreportNotifyPhoneNuisances publicreportNotifyPhoneNuisanceWhere[Q]
PublicreportNotifyPhoneWaters publicreportNotifyPhoneWaterWhere[Q] PublicreportNotifyPhoneWaters publicreportNotifyPhoneWaterWhere[Q]
PublicreportNuisances publicreportNuisanceWhere[Q] PublicreportNuisances publicreportNuisanceWhere[Q]
PublicreportNuisanceImages publicreportNuisanceImageWhere[Q] PublicreportNuisanceImages publicreportNuisanceImageWhere[Q]
PublicreportReportLocations publicreportReportLocationWhere[Q] PublicreportOrganizationReportCounts publicreportOrganizationReportCountWhere[Q]
PublicreportSubscribeEmails publicreportSubscribeEmailWhere[Q] PublicreportReportLocations publicreportReportLocationWhere[Q]
PublicreportSubscribePhones publicreportSubscribePhoneWhere[Q] PublicreportSubscribeEmails publicreportSubscribeEmailWhere[Q]
PublicreportWaters publicreportWaterWhere[Q] PublicreportSubscribePhones publicreportSubscribePhoneWhere[Q]
PublicreportWaterImages publicreportWaterImageWhere[Q] PublicreportWaters publicreportWaterWhere[Q]
RasterColumns rasterColumnWhere[Q] PublicreportWaterImages publicreportWaterImageWhere[Q]
RasterOverviews rasterOverviewWhere[Q] RasterColumns rasterColumnWhere[Q]
Residents residentWhere[Q] RasterOverviews rasterOverviewWhere[Q]
ReviewTasks reviewTaskWhere[Q] Residents residentWhere[Q]
ReviewTaskPools reviewTaskPoolWhere[Q] ReviewTasks reviewTaskWhere[Q]
Sessions sessionWhere[Q] ReviewTaskPools reviewTaskPoolWhere[Q]
Signals signalWhere[Q] Sessions sessionWhere[Q]
Sites siteWhere[Q] Signals signalWhere[Q]
SpatialRefSys spatialRefSyWhere[Q] Sites siteWhere[Q]
TileCachedImages tileCachedImageWhere[Q] SpatialRefSys spatialRefSyWhere[Q]
Users userWhere[Q] TileCachedImages tileCachedImageWhere[Q]
Users userWhere[Q]
} { } {
return struct { return struct {
Addresses addressWhere[Q] Addresses addressWhere[Q]
ArcgisAccounts arcgisAccountWhere[Q] ArcgisAccounts arcgisAccountWhere[Q]
ArcgisAddressMappings arcgisAddressMappingWhere[Q] ArcgisAddressMappings arcgisAddressMappingWhere[Q]
ArcgisLayers arcgisLayerWhere[Q] ArcgisLayers arcgisLayerWhere[Q]
ArcgisLayerFields arcgisLayerFieldWhere[Q] ArcgisLayerFields arcgisLayerFieldWhere[Q]
ArcgisOauthTokens arcgisOauthTokenWhere[Q] ArcgisOauthTokens arcgisOauthTokenWhere[Q]
ArcgisParcelMappings arcgisParcelMappingWhere[Q] ArcgisParcelMappings arcgisParcelMappingWhere[Q]
ArcgisServiceFeatures arcgisServiceFeatureWhere[Q] ArcgisServiceFeatures arcgisServiceFeatureWhere[Q]
ArcgisServiceMaps arcgisServiceMapWhere[Q] ArcgisServiceMaps arcgisServiceMapWhere[Q]
ArcgisUsers arcgisuserWhere[Q] ArcgisUsers arcgisuserWhere[Q]
ArcgisUserPrivileges arcgisUserPrivilegeWhere[Q] ArcgisUserPrivileges arcgisUserPrivilegeWhere[Q]
CommsEmailContacts commsEmailContactWhere[Q] CommsEmailContacts commsEmailContactWhere[Q]
CommsEmailLogs commsEmailLogWhere[Q] CommsEmailLogs commsEmailLogWhere[Q]
CommsEmailTemplates commsEmailTemplateWhere[Q] CommsEmailTemplates commsEmailTemplateWhere[Q]
CommsMailers commsMailerWhere[Q] CommsMailers commsMailerWhere[Q]
CommsPhones commsPhoneWhere[Q] CommsPhones commsPhoneWhere[Q]
CommsTextJobs commsTextJobWhere[Q] CommsTextJobs commsTextJobWhere[Q]
CommsTextLogs commsTextLogWhere[Q] CommsTextLogs commsTextLogWhere[Q]
ComplianceReportRequests complianceReportRequestWhere[Q] ComplianceReportRequests complianceReportRequestWhere[Q]
ComplianceReportRequestMailers complianceReportRequestMailerWhere[Q] ComplianceReportRequestMailers complianceReportRequestMailerWhere[Q]
DistrictSubscriptionEmails districtSubscriptionEmailWhere[Q] DistrictSubscriptionEmails districtSubscriptionEmailWhere[Q]
DistrictSubscriptionPhones districtSubscriptionPhoneWhere[Q] DistrictSubscriptionPhones districtSubscriptionPhoneWhere[Q]
Features featureWhere[Q] Features featureWhere[Q]
FeaturePools featurePoolWhere[Q] FeaturePools featurePoolWhere[Q]
FieldseekerContainerrelates fieldseekerContainerrelateWhere[Q] FieldseekerContainerrelates fieldseekerContainerrelateWhere[Q]
FieldseekerFieldscoutinglogs fieldseekerFieldscoutinglogWhere[Q] FieldseekerFieldscoutinglogs fieldseekerFieldscoutinglogWhere[Q]
FieldseekerHabitatrelates fieldseekerHabitatrelateWhere[Q] FieldseekerHabitatrelates fieldseekerHabitatrelateWhere[Q]
FieldseekerInspectionsamples fieldseekerInspectionsampleWhere[Q] FieldseekerInspectionsamples fieldseekerInspectionsampleWhere[Q]
FieldseekerInspectionsampledetails fieldseekerInspectionsampledetailWhere[Q] FieldseekerInspectionsampledetails fieldseekerInspectionsampledetailWhere[Q]
FieldseekerLinelocations fieldseekerLinelocationWhere[Q] FieldseekerLinelocations fieldseekerLinelocationWhere[Q]
FieldseekerLocationtrackings fieldseekerLocationtrackingWhere[Q] FieldseekerLocationtrackings fieldseekerLocationtrackingWhere[Q]
FieldseekerMosquitoinspections fieldseekerMosquitoinspectionWhere[Q] FieldseekerMosquitoinspections fieldseekerMosquitoinspectionWhere[Q]
FieldseekerPointlocations fieldseekerPointlocationWhere[Q] FieldseekerPointlocations fieldseekerPointlocationWhere[Q]
FieldseekerPolygonlocations fieldseekerPolygonlocationWhere[Q] FieldseekerPolygonlocations fieldseekerPolygonlocationWhere[Q]
FieldseekerPools fieldseekerPoolWhere[Q] FieldseekerPools fieldseekerPoolWhere[Q]
FieldseekerPooldetails fieldseekerPooldetailWhere[Q] FieldseekerPooldetails fieldseekerPooldetailWhere[Q]
FieldseekerProposedtreatmentareas fieldseekerProposedtreatmentareaWhere[Q] FieldseekerProposedtreatmentareas fieldseekerProposedtreatmentareaWhere[Q]
FieldseekerQamosquitoinspections fieldseekerQamosquitoinspectionWhere[Q] FieldseekerQamosquitoinspections fieldseekerQamosquitoinspectionWhere[Q]
FieldseekerRodentlocations fieldseekerRodentlocationWhere[Q] FieldseekerRodentlocations fieldseekerRodentlocationWhere[Q]
FieldseekerSamplecollections fieldseekerSamplecollectionWhere[Q] FieldseekerSamplecollections fieldseekerSamplecollectionWhere[Q]
FieldseekerSamplelocations fieldseekerSamplelocationWhere[Q] FieldseekerSamplelocations fieldseekerSamplelocationWhere[Q]
FieldseekerServicerequests fieldseekerServicerequestWhere[Q] FieldseekerServicerequests fieldseekerServicerequestWhere[Q]
FieldseekerSpeciesabundances fieldseekerSpeciesabundanceWhere[Q] FieldseekerSpeciesabundances fieldseekerSpeciesabundanceWhere[Q]
FieldseekerStormdrains fieldseekerStormdrainWhere[Q] FieldseekerStormdrains fieldseekerStormdrainWhere[Q]
FieldseekerTimecards fieldseekerTimecardWhere[Q] FieldseekerTimecards fieldseekerTimecardWhere[Q]
FieldseekerTrapdata fieldseekerTrapdatumWhere[Q] FieldseekerTrapdata fieldseekerTrapdatumWhere[Q]
FieldseekerTraplocations fieldseekerTraplocationWhere[Q] FieldseekerTraplocations fieldseekerTraplocationWhere[Q]
FieldseekerTreatments fieldseekerTreatmentWhere[Q] FieldseekerTreatments fieldseekerTreatmentWhere[Q]
FieldseekerTreatmentareas fieldseekerTreatmentareaWhere[Q] FieldseekerTreatmentareas fieldseekerTreatmentareaWhere[Q]
FieldseekerZones fieldseekerZoneWhere[Q] FieldseekerZones fieldseekerZoneWhere[Q]
FieldseekerZones2s fieldseekerZones2Where[Q] FieldseekerZones2s fieldseekerZones2Where[Q]
FieldseekerSyncs fieldseekerSyncWhere[Q] FieldseekerSyncs fieldseekerSyncWhere[Q]
FileuploadCSVS fileuploadCSVWhere[Q] FileuploadCSVS fileuploadCSVWhere[Q]
FileuploadErrorCSVS fileuploadErrorCSVWhere[Q] FileuploadErrorCSVS fileuploadErrorCSVWhere[Q]
FileuploadErrorFiles fileuploadErrorFileWhere[Q] FileuploadErrorFiles fileuploadErrorFileWhere[Q]
FileuploadFiles fileuploadFileWhere[Q] FileuploadFiles fileuploadFileWhere[Q]
FileuploadPools fileuploadPoolWhere[Q] FileuploadPools fileuploadPoolWhere[Q]
GeographyColumns geographyColumnWhere[Q] GeographyColumns geographyColumnWhere[Q]
GeometryColumns geometryColumnWhere[Q] GeometryColumns geometryColumnWhere[Q]
GooseDBVersions gooseDBVersionWhere[Q] GooseDBVersions gooseDBVersionWhere[Q]
H3Aggregations h3AggregationWhere[Q] H3Aggregations h3AggregationWhere[Q]
Leads leadWhere[Q] Leads leadWhere[Q]
NoteAudios noteAudioWhere[Q] NoteAudios noteAudioWhere[Q]
NoteAudioBreadcrumbs noteAudioBreadcrumbWhere[Q] NoteAudioBreadcrumbs noteAudioBreadcrumbWhere[Q]
NoteAudioData noteAudioDatumWhere[Q] NoteAudioData noteAudioDatumWhere[Q]
NoteImages noteImageWhere[Q] NoteImages noteImageWhere[Q]
NoteImageBreadcrumbs noteImageBreadcrumbWhere[Q] NoteImageBreadcrumbs noteImageBreadcrumbWhere[Q]
NoteImageData noteImageDatumWhere[Q] NoteImageData noteImageDatumWhere[Q]
Notifications notificationWhere[Q] Notifications notificationWhere[Q]
Organizations organizationWhere[Q] Organizations organizationWhere[Q]
Parcels parcelWhere[Q] Parcels parcelWhere[Q]
PublicreportImages publicreportImageWhere[Q] PublicreportImages publicreportImageWhere[Q]
PublicreportImageExifs publicreportImageExifWhere[Q] PublicreportImageExifs publicreportImageExifWhere[Q]
PublicreportNotifyEmailNuisances publicreportNotifyEmailNuisanceWhere[Q] PublicreportNotifyEmailNuisances publicreportNotifyEmailNuisanceWhere[Q]
PublicreportNotifyEmailWaters publicreportNotifyEmailWaterWhere[Q] PublicreportNotifyEmailWaters publicreportNotifyEmailWaterWhere[Q]
PublicreportNotifyPhoneNuisances publicreportNotifyPhoneNuisanceWhere[Q] PublicreportNotifyPhoneNuisances publicreportNotifyPhoneNuisanceWhere[Q]
PublicreportNotifyPhoneWaters publicreportNotifyPhoneWaterWhere[Q] PublicreportNotifyPhoneWaters publicreportNotifyPhoneWaterWhere[Q]
PublicreportNuisances publicreportNuisanceWhere[Q] PublicreportNuisances publicreportNuisanceWhere[Q]
PublicreportNuisanceImages publicreportNuisanceImageWhere[Q] PublicreportNuisanceImages publicreportNuisanceImageWhere[Q]
PublicreportReportLocations publicreportReportLocationWhere[Q] PublicreportOrganizationReportCounts publicreportOrganizationReportCountWhere[Q]
PublicreportSubscribeEmails publicreportSubscribeEmailWhere[Q] PublicreportReportLocations publicreportReportLocationWhere[Q]
PublicreportSubscribePhones publicreportSubscribePhoneWhere[Q] PublicreportSubscribeEmails publicreportSubscribeEmailWhere[Q]
PublicreportWaters publicreportWaterWhere[Q] PublicreportSubscribePhones publicreportSubscribePhoneWhere[Q]
PublicreportWaterImages publicreportWaterImageWhere[Q] PublicreportWaters publicreportWaterWhere[Q]
RasterColumns rasterColumnWhere[Q] PublicreportWaterImages publicreportWaterImageWhere[Q]
RasterOverviews rasterOverviewWhere[Q] RasterColumns rasterColumnWhere[Q]
Residents residentWhere[Q] RasterOverviews rasterOverviewWhere[Q]
ReviewTasks reviewTaskWhere[Q] Residents residentWhere[Q]
ReviewTaskPools reviewTaskPoolWhere[Q] ReviewTasks reviewTaskWhere[Q]
Sessions sessionWhere[Q] ReviewTaskPools reviewTaskPoolWhere[Q]
Signals signalWhere[Q] Sessions sessionWhere[Q]
Sites siteWhere[Q] Signals signalWhere[Q]
SpatialRefSys spatialRefSyWhere[Q] Sites siteWhere[Q]
TileCachedImages tileCachedImageWhere[Q] SpatialRefSys spatialRefSyWhere[Q]
Users userWhere[Q] TileCachedImages tileCachedImageWhere[Q]
Users userWhere[Q]
}{ }{
Addresses: buildAddressWhere[Q](Addresses.Columns), Addresses: buildAddressWhere[Q](Addresses.Columns),
ArcgisAccounts: buildArcgisAccountWhere[Q](ArcgisAccounts.Columns), ArcgisAccounts: buildArcgisAccountWhere[Q](ArcgisAccounts.Columns),
ArcgisAddressMappings: buildArcgisAddressMappingWhere[Q](ArcgisAddressMappings.Columns), ArcgisAddressMappings: buildArcgisAddressMappingWhere[Q](ArcgisAddressMappings.Columns),
ArcgisLayers: buildArcgisLayerWhere[Q](ArcgisLayers.Columns), ArcgisLayers: buildArcgisLayerWhere[Q](ArcgisLayers.Columns),
ArcgisLayerFields: buildArcgisLayerFieldWhere[Q](ArcgisLayerFields.Columns), ArcgisLayerFields: buildArcgisLayerFieldWhere[Q](ArcgisLayerFields.Columns),
ArcgisOauthTokens: buildArcgisOauthTokenWhere[Q](ArcgisOauthTokens.Columns), ArcgisOauthTokens: buildArcgisOauthTokenWhere[Q](ArcgisOauthTokens.Columns),
ArcgisParcelMappings: buildArcgisParcelMappingWhere[Q](ArcgisParcelMappings.Columns), ArcgisParcelMappings: buildArcgisParcelMappingWhere[Q](ArcgisParcelMappings.Columns),
ArcgisServiceFeatures: buildArcgisServiceFeatureWhere[Q](ArcgisServiceFeatures.Columns), ArcgisServiceFeatures: buildArcgisServiceFeatureWhere[Q](ArcgisServiceFeatures.Columns),
ArcgisServiceMaps: buildArcgisServiceMapWhere[Q](ArcgisServiceMaps.Columns), ArcgisServiceMaps: buildArcgisServiceMapWhere[Q](ArcgisServiceMaps.Columns),
ArcgisUsers: buildArcgisUserWhere[Q](ArcgisUsers.Columns), ArcgisUsers: buildArcgisUserWhere[Q](ArcgisUsers.Columns),
ArcgisUserPrivileges: buildArcgisUserPrivilegeWhere[Q](ArcgisUserPrivileges.Columns), ArcgisUserPrivileges: buildArcgisUserPrivilegeWhere[Q](ArcgisUserPrivileges.Columns),
CommsEmailContacts: buildCommsEmailContactWhere[Q](CommsEmailContacts.Columns), CommsEmailContacts: buildCommsEmailContactWhere[Q](CommsEmailContacts.Columns),
CommsEmailLogs: buildCommsEmailLogWhere[Q](CommsEmailLogs.Columns), CommsEmailLogs: buildCommsEmailLogWhere[Q](CommsEmailLogs.Columns),
CommsEmailTemplates: buildCommsEmailTemplateWhere[Q](CommsEmailTemplates.Columns), CommsEmailTemplates: buildCommsEmailTemplateWhere[Q](CommsEmailTemplates.Columns),
CommsMailers: buildCommsMailerWhere[Q](CommsMailers.Columns), CommsMailers: buildCommsMailerWhere[Q](CommsMailers.Columns),
CommsPhones: buildCommsPhoneWhere[Q](CommsPhones.Columns), CommsPhones: buildCommsPhoneWhere[Q](CommsPhones.Columns),
CommsTextJobs: buildCommsTextJobWhere[Q](CommsTextJobs.Columns), CommsTextJobs: buildCommsTextJobWhere[Q](CommsTextJobs.Columns),
CommsTextLogs: buildCommsTextLogWhere[Q](CommsTextLogs.Columns), CommsTextLogs: buildCommsTextLogWhere[Q](CommsTextLogs.Columns),
ComplianceReportRequests: buildComplianceReportRequestWhere[Q](ComplianceReportRequests.Columns), ComplianceReportRequests: buildComplianceReportRequestWhere[Q](ComplianceReportRequests.Columns),
ComplianceReportRequestMailers: buildComplianceReportRequestMailerWhere[Q](ComplianceReportRequestMailers.Columns), ComplianceReportRequestMailers: buildComplianceReportRequestMailerWhere[Q](ComplianceReportRequestMailers.Columns),
DistrictSubscriptionEmails: buildDistrictSubscriptionEmailWhere[Q](DistrictSubscriptionEmails.Columns), DistrictSubscriptionEmails: buildDistrictSubscriptionEmailWhere[Q](DistrictSubscriptionEmails.Columns),
DistrictSubscriptionPhones: buildDistrictSubscriptionPhoneWhere[Q](DistrictSubscriptionPhones.Columns), DistrictSubscriptionPhones: buildDistrictSubscriptionPhoneWhere[Q](DistrictSubscriptionPhones.Columns),
Features: buildFeatureWhere[Q](Features.Columns), Features: buildFeatureWhere[Q](Features.Columns),
FeaturePools: buildFeaturePoolWhere[Q](FeaturePools.Columns), FeaturePools: buildFeaturePoolWhere[Q](FeaturePools.Columns),
FieldseekerContainerrelates: buildFieldseekerContainerrelateWhere[Q](FieldseekerContainerrelates.Columns), FieldseekerContainerrelates: buildFieldseekerContainerrelateWhere[Q](FieldseekerContainerrelates.Columns),
FieldseekerFieldscoutinglogs: buildFieldseekerFieldscoutinglogWhere[Q](FieldseekerFieldscoutinglogs.Columns), FieldseekerFieldscoutinglogs: buildFieldseekerFieldscoutinglogWhere[Q](FieldseekerFieldscoutinglogs.Columns),
FieldseekerHabitatrelates: buildFieldseekerHabitatrelateWhere[Q](FieldseekerHabitatrelates.Columns), FieldseekerHabitatrelates: buildFieldseekerHabitatrelateWhere[Q](FieldseekerHabitatrelates.Columns),
FieldseekerInspectionsamples: buildFieldseekerInspectionsampleWhere[Q](FieldseekerInspectionsamples.Columns), FieldseekerInspectionsamples: buildFieldseekerInspectionsampleWhere[Q](FieldseekerInspectionsamples.Columns),
FieldseekerInspectionsampledetails: buildFieldseekerInspectionsampledetailWhere[Q](FieldseekerInspectionsampledetails.Columns), FieldseekerInspectionsampledetails: buildFieldseekerInspectionsampledetailWhere[Q](FieldseekerInspectionsampledetails.Columns),
FieldseekerLinelocations: buildFieldseekerLinelocationWhere[Q](FieldseekerLinelocations.Columns), FieldseekerLinelocations: buildFieldseekerLinelocationWhere[Q](FieldseekerLinelocations.Columns),
FieldseekerLocationtrackings: buildFieldseekerLocationtrackingWhere[Q](FieldseekerLocationtrackings.Columns), FieldseekerLocationtrackings: buildFieldseekerLocationtrackingWhere[Q](FieldseekerLocationtrackings.Columns),
FieldseekerMosquitoinspections: buildFieldseekerMosquitoinspectionWhere[Q](FieldseekerMosquitoinspections.Columns), FieldseekerMosquitoinspections: buildFieldseekerMosquitoinspectionWhere[Q](FieldseekerMosquitoinspections.Columns),
FieldseekerPointlocations: buildFieldseekerPointlocationWhere[Q](FieldseekerPointlocations.Columns), FieldseekerPointlocations: buildFieldseekerPointlocationWhere[Q](FieldseekerPointlocations.Columns),
FieldseekerPolygonlocations: buildFieldseekerPolygonlocationWhere[Q](FieldseekerPolygonlocations.Columns), FieldseekerPolygonlocations: buildFieldseekerPolygonlocationWhere[Q](FieldseekerPolygonlocations.Columns),
FieldseekerPools: buildFieldseekerPoolWhere[Q](FieldseekerPools.Columns), FieldseekerPools: buildFieldseekerPoolWhere[Q](FieldseekerPools.Columns),
FieldseekerPooldetails: buildFieldseekerPooldetailWhere[Q](FieldseekerPooldetails.Columns), FieldseekerPooldetails: buildFieldseekerPooldetailWhere[Q](FieldseekerPooldetails.Columns),
FieldseekerProposedtreatmentareas: buildFieldseekerProposedtreatmentareaWhere[Q](FieldseekerProposedtreatmentareas.Columns), FieldseekerProposedtreatmentareas: buildFieldseekerProposedtreatmentareaWhere[Q](FieldseekerProposedtreatmentareas.Columns),
FieldseekerQamosquitoinspections: buildFieldseekerQamosquitoinspectionWhere[Q](FieldseekerQamosquitoinspections.Columns), FieldseekerQamosquitoinspections: buildFieldseekerQamosquitoinspectionWhere[Q](FieldseekerQamosquitoinspections.Columns),
FieldseekerRodentlocations: buildFieldseekerRodentlocationWhere[Q](FieldseekerRodentlocations.Columns), FieldseekerRodentlocations: buildFieldseekerRodentlocationWhere[Q](FieldseekerRodentlocations.Columns),
FieldseekerSamplecollections: buildFieldseekerSamplecollectionWhere[Q](FieldseekerSamplecollections.Columns), FieldseekerSamplecollections: buildFieldseekerSamplecollectionWhere[Q](FieldseekerSamplecollections.Columns),
FieldseekerSamplelocations: buildFieldseekerSamplelocationWhere[Q](FieldseekerSamplelocations.Columns), FieldseekerSamplelocations: buildFieldseekerSamplelocationWhere[Q](FieldseekerSamplelocations.Columns),
FieldseekerServicerequests: buildFieldseekerServicerequestWhere[Q](FieldseekerServicerequests.Columns), FieldseekerServicerequests: buildFieldseekerServicerequestWhere[Q](FieldseekerServicerequests.Columns),
FieldseekerSpeciesabundances: buildFieldseekerSpeciesabundanceWhere[Q](FieldseekerSpeciesabundances.Columns), FieldseekerSpeciesabundances: buildFieldseekerSpeciesabundanceWhere[Q](FieldseekerSpeciesabundances.Columns),
FieldseekerStormdrains: buildFieldseekerStormdrainWhere[Q](FieldseekerStormdrains.Columns), FieldseekerStormdrains: buildFieldseekerStormdrainWhere[Q](FieldseekerStormdrains.Columns),
FieldseekerTimecards: buildFieldseekerTimecardWhere[Q](FieldseekerTimecards.Columns), FieldseekerTimecards: buildFieldseekerTimecardWhere[Q](FieldseekerTimecards.Columns),
FieldseekerTrapdata: buildFieldseekerTrapdatumWhere[Q](FieldseekerTrapdata.Columns), FieldseekerTrapdata: buildFieldseekerTrapdatumWhere[Q](FieldseekerTrapdata.Columns),
FieldseekerTraplocations: buildFieldseekerTraplocationWhere[Q](FieldseekerTraplocations.Columns), FieldseekerTraplocations: buildFieldseekerTraplocationWhere[Q](FieldseekerTraplocations.Columns),
FieldseekerTreatments: buildFieldseekerTreatmentWhere[Q](FieldseekerTreatments.Columns), FieldseekerTreatments: buildFieldseekerTreatmentWhere[Q](FieldseekerTreatments.Columns),
FieldseekerTreatmentareas: buildFieldseekerTreatmentareaWhere[Q](FieldseekerTreatmentareas.Columns), FieldseekerTreatmentareas: buildFieldseekerTreatmentareaWhere[Q](FieldseekerTreatmentareas.Columns),
FieldseekerZones: buildFieldseekerZoneWhere[Q](FieldseekerZones.Columns), FieldseekerZones: buildFieldseekerZoneWhere[Q](FieldseekerZones.Columns),
FieldseekerZones2s: buildFieldseekerZones2Where[Q](FieldseekerZones2s.Columns), FieldseekerZones2s: buildFieldseekerZones2Where[Q](FieldseekerZones2s.Columns),
FieldseekerSyncs: buildFieldseekerSyncWhere[Q](FieldseekerSyncs.Columns), FieldseekerSyncs: buildFieldseekerSyncWhere[Q](FieldseekerSyncs.Columns),
FileuploadCSVS: buildFileuploadCSVWhere[Q](FileuploadCSVS.Columns), FileuploadCSVS: buildFileuploadCSVWhere[Q](FileuploadCSVS.Columns),
FileuploadErrorCSVS: buildFileuploadErrorCSVWhere[Q](FileuploadErrorCSVS.Columns), FileuploadErrorCSVS: buildFileuploadErrorCSVWhere[Q](FileuploadErrorCSVS.Columns),
FileuploadErrorFiles: buildFileuploadErrorFileWhere[Q](FileuploadErrorFiles.Columns), FileuploadErrorFiles: buildFileuploadErrorFileWhere[Q](FileuploadErrorFiles.Columns),
FileuploadFiles: buildFileuploadFileWhere[Q](FileuploadFiles.Columns), FileuploadFiles: buildFileuploadFileWhere[Q](FileuploadFiles.Columns),
FileuploadPools: buildFileuploadPoolWhere[Q](FileuploadPools.Columns), FileuploadPools: buildFileuploadPoolWhere[Q](FileuploadPools.Columns),
GeographyColumns: buildGeographyColumnWhere[Q](GeographyColumns.Columns), GeographyColumns: buildGeographyColumnWhere[Q](GeographyColumns.Columns),
GeometryColumns: buildGeometryColumnWhere[Q](GeometryColumns.Columns), GeometryColumns: buildGeometryColumnWhere[Q](GeometryColumns.Columns),
GooseDBVersions: buildGooseDBVersionWhere[Q](GooseDBVersions.Columns), GooseDBVersions: buildGooseDBVersionWhere[Q](GooseDBVersions.Columns),
H3Aggregations: buildH3AggregationWhere[Q](H3Aggregations.Columns), H3Aggregations: buildH3AggregationWhere[Q](H3Aggregations.Columns),
Leads: buildLeadWhere[Q](Leads.Columns), Leads: buildLeadWhere[Q](Leads.Columns),
NoteAudios: buildNoteAudioWhere[Q](NoteAudios.Columns), NoteAudios: buildNoteAudioWhere[Q](NoteAudios.Columns),
NoteAudioBreadcrumbs: buildNoteAudioBreadcrumbWhere[Q](NoteAudioBreadcrumbs.Columns), NoteAudioBreadcrumbs: buildNoteAudioBreadcrumbWhere[Q](NoteAudioBreadcrumbs.Columns),
NoteAudioData: buildNoteAudioDatumWhere[Q](NoteAudioData.Columns), NoteAudioData: buildNoteAudioDatumWhere[Q](NoteAudioData.Columns),
NoteImages: buildNoteImageWhere[Q](NoteImages.Columns), NoteImages: buildNoteImageWhere[Q](NoteImages.Columns),
NoteImageBreadcrumbs: buildNoteImageBreadcrumbWhere[Q](NoteImageBreadcrumbs.Columns), NoteImageBreadcrumbs: buildNoteImageBreadcrumbWhere[Q](NoteImageBreadcrumbs.Columns),
NoteImageData: buildNoteImageDatumWhere[Q](NoteImageData.Columns), NoteImageData: buildNoteImageDatumWhere[Q](NoteImageData.Columns),
Notifications: buildNotificationWhere[Q](Notifications.Columns), Notifications: buildNotificationWhere[Q](Notifications.Columns),
Organizations: buildOrganizationWhere[Q](Organizations.Columns), Organizations: buildOrganizationWhere[Q](Organizations.Columns),
Parcels: buildParcelWhere[Q](Parcels.Columns), Parcels: buildParcelWhere[Q](Parcels.Columns),
PublicreportImages: buildPublicreportImageWhere[Q](PublicreportImages.Columns), PublicreportImages: buildPublicreportImageWhere[Q](PublicreportImages.Columns),
PublicreportImageExifs: buildPublicreportImageExifWhere[Q](PublicreportImageExifs.Columns), PublicreportImageExifs: buildPublicreportImageExifWhere[Q](PublicreportImageExifs.Columns),
PublicreportNotifyEmailNuisances: buildPublicreportNotifyEmailNuisanceWhere[Q](PublicreportNotifyEmailNuisances.Columns), PublicreportNotifyEmailNuisances: buildPublicreportNotifyEmailNuisanceWhere[Q](PublicreportNotifyEmailNuisances.Columns),
PublicreportNotifyEmailWaters: buildPublicreportNotifyEmailWaterWhere[Q](PublicreportNotifyEmailWaters.Columns), PublicreportNotifyEmailWaters: buildPublicreportNotifyEmailWaterWhere[Q](PublicreportNotifyEmailWaters.Columns),
PublicreportNotifyPhoneNuisances: buildPublicreportNotifyPhoneNuisanceWhere[Q](PublicreportNotifyPhoneNuisances.Columns), PublicreportNotifyPhoneNuisances: buildPublicreportNotifyPhoneNuisanceWhere[Q](PublicreportNotifyPhoneNuisances.Columns),
PublicreportNotifyPhoneWaters: buildPublicreportNotifyPhoneWaterWhere[Q](PublicreportNotifyPhoneWaters.Columns), PublicreportNotifyPhoneWaters: buildPublicreportNotifyPhoneWaterWhere[Q](PublicreportNotifyPhoneWaters.Columns),
PublicreportNuisances: buildPublicreportNuisanceWhere[Q](PublicreportNuisances.Columns), PublicreportNuisances: buildPublicreportNuisanceWhere[Q](PublicreportNuisances.Columns),
PublicreportNuisanceImages: buildPublicreportNuisanceImageWhere[Q](PublicreportNuisanceImages.Columns), PublicreportNuisanceImages: buildPublicreportNuisanceImageWhere[Q](PublicreportNuisanceImages.Columns),
PublicreportReportLocations: buildPublicreportReportLocationWhere[Q](PublicreportReportLocations.Columns), PublicreportOrganizationReportCounts: buildPublicreportOrganizationReportCountWhere[Q](PublicreportOrganizationReportCounts.Columns),
PublicreportSubscribeEmails: buildPublicreportSubscribeEmailWhere[Q](PublicreportSubscribeEmails.Columns), PublicreportReportLocations: buildPublicreportReportLocationWhere[Q](PublicreportReportLocations.Columns),
PublicreportSubscribePhones: buildPublicreportSubscribePhoneWhere[Q](PublicreportSubscribePhones.Columns), PublicreportSubscribeEmails: buildPublicreportSubscribeEmailWhere[Q](PublicreportSubscribeEmails.Columns),
PublicreportWaters: buildPublicreportWaterWhere[Q](PublicreportWaters.Columns), PublicreportSubscribePhones: buildPublicreportSubscribePhoneWhere[Q](PublicreportSubscribePhones.Columns),
PublicreportWaterImages: buildPublicreportWaterImageWhere[Q](PublicreportWaterImages.Columns), PublicreportWaters: buildPublicreportWaterWhere[Q](PublicreportWaters.Columns),
RasterColumns: buildRasterColumnWhere[Q](RasterColumns.Columns), PublicreportWaterImages: buildPublicreportWaterImageWhere[Q](PublicreportWaterImages.Columns),
RasterOverviews: buildRasterOverviewWhere[Q](RasterOverviews.Columns), RasterColumns: buildRasterColumnWhere[Q](RasterColumns.Columns),
Residents: buildResidentWhere[Q](Residents.Columns), RasterOverviews: buildRasterOverviewWhere[Q](RasterOverviews.Columns),
ReviewTasks: buildReviewTaskWhere[Q](ReviewTasks.Columns), Residents: buildResidentWhere[Q](Residents.Columns),
ReviewTaskPools: buildReviewTaskPoolWhere[Q](ReviewTaskPools.Columns), ReviewTasks: buildReviewTaskWhere[Q](ReviewTasks.Columns),
Sessions: buildSessionWhere[Q](Sessions.Columns), ReviewTaskPools: buildReviewTaskPoolWhere[Q](ReviewTaskPools.Columns),
Signals: buildSignalWhere[Q](Signals.Columns), Sessions: buildSessionWhere[Q](Sessions.Columns),
Sites: buildSiteWhere[Q](Sites.Columns), Signals: buildSignalWhere[Q](Signals.Columns),
SpatialRefSys: buildSpatialRefSyWhere[Q](SpatialRefSys.Columns), Sites: buildSiteWhere[Q](Sites.Columns),
TileCachedImages: buildTileCachedImageWhere[Q](TileCachedImages.Columns), SpatialRefSys: buildSpatialRefSyWhere[Q](SpatialRefSys.Columns),
Users: buildUserWhere[Q](Users.Columns), TileCachedImages: buildTileCachedImageWhere[Q](TileCachedImages.Columns),
Users: buildUserWhere[Q](Users.Columns),
} }
} }

View file

@ -30,7 +30,6 @@ type Feature struct {
ID int32 `db:"id,pk" ` ID int32 `db:"id,pk" `
OrganizationID int32 `db:"organization_id" ` OrganizationID int32 `db:"organization_id" `
SiteID int32 `db:"site_id" ` SiteID int32 `db:"site_id" `
SiteVersion int32 `db:"site_version" `
Location null.Val[string] `db:"location" ` Location null.Val[string] `db:"location" `
R featureR `db:"-" ` R featureR `db:"-" `
@ -50,14 +49,14 @@ type FeaturesQuery = *psql.ViewQuery[*Feature, FeatureSlice]
type featureR struct { type featureR struct {
CreatorUser *User // feature.feature_creator_id_fkey CreatorUser *User // feature.feature_creator_id_fkey
Organization *Organization // feature.feature_organization_id_fkey Organization *Organization // feature.feature_organization_id_fkey
Site *Site // feature.feature_site_id_site_version_fkey Site *Site // feature.feature_site_id_fkey
FeaturePool *FeaturePool // feature_pool.feature_pool_feature_id_fkey FeaturePool *FeaturePool // feature_pool.feature_pool_feature_id_fkey
} }
func buildFeatureColumns(alias string) featureColumns { func buildFeatureColumns(alias string) featureColumns {
return featureColumns{ return featureColumns{
ColumnsExpr: expr.NewColumnsExpr( ColumnsExpr: expr.NewColumnsExpr(
"created", "creator_id", "id", "organization_id", "site_id", "site_version", "location", "created", "creator_id", "id", "organization_id", "site_id", "location",
).WithParent("feature"), ).WithParent("feature"),
tableAlias: alias, tableAlias: alias,
Created: psql.Quote(alias, "created"), Created: psql.Quote(alias, "created"),
@ -65,7 +64,6 @@ func buildFeatureColumns(alias string) featureColumns {
ID: psql.Quote(alias, "id"), ID: psql.Quote(alias, "id"),
OrganizationID: psql.Quote(alias, "organization_id"), OrganizationID: psql.Quote(alias, "organization_id"),
SiteID: psql.Quote(alias, "site_id"), SiteID: psql.Quote(alias, "site_id"),
SiteVersion: psql.Quote(alias, "site_version"),
Location: psql.Quote(alias, "location"), Location: psql.Quote(alias, "location"),
} }
} }
@ -78,7 +76,6 @@ type featureColumns struct {
ID psql.Expression ID psql.Expression
OrganizationID psql.Expression OrganizationID psql.Expression
SiteID psql.Expression SiteID psql.Expression
SiteVersion psql.Expression
Location psql.Expression Location psql.Expression
} }
@ -99,12 +96,11 @@ type FeatureSetter struct {
ID omit.Val[int32] `db:"id,pk" ` ID omit.Val[int32] `db:"id,pk" `
OrganizationID omit.Val[int32] `db:"organization_id" ` OrganizationID omit.Val[int32] `db:"organization_id" `
SiteID omit.Val[int32] `db:"site_id" ` SiteID omit.Val[int32] `db:"site_id" `
SiteVersion omit.Val[int32] `db:"site_version" `
Location omitnull.Val[string] `db:"location" ` Location omitnull.Val[string] `db:"location" `
} }
func (s FeatureSetter) SetColumns() []string { func (s FeatureSetter) SetColumns() []string {
vals := make([]string, 0, 7) vals := make([]string, 0, 6)
if s.Created.IsValue() { if s.Created.IsValue() {
vals = append(vals, "created") vals = append(vals, "created")
} }
@ -120,9 +116,6 @@ func (s FeatureSetter) SetColumns() []string {
if s.SiteID.IsValue() { if s.SiteID.IsValue() {
vals = append(vals, "site_id") vals = append(vals, "site_id")
} }
if s.SiteVersion.IsValue() {
vals = append(vals, "site_version")
}
if !s.Location.IsUnset() { if !s.Location.IsUnset() {
vals = append(vals, "location") vals = append(vals, "location")
} }
@ -145,9 +138,6 @@ func (s FeatureSetter) Overwrite(t *Feature) {
if s.SiteID.IsValue() { if s.SiteID.IsValue() {
t.SiteID = s.SiteID.MustGet() t.SiteID = s.SiteID.MustGet()
} }
if s.SiteVersion.IsValue() {
t.SiteVersion = s.SiteVersion.MustGet()
}
if !s.Location.IsUnset() { if !s.Location.IsUnset() {
t.Location = s.Location.MustGetNull() t.Location = s.Location.MustGetNull()
} }
@ -159,7 +149,7 @@ func (s *FeatureSetter) Apply(q *dialect.InsertQuery) {
}) })
q.AppendValues(bob.ExpressionFunc(func(ctx context.Context, w io.StringWriter, d bob.Dialect, start int) ([]any, error) { q.AppendValues(bob.ExpressionFunc(func(ctx context.Context, w io.StringWriter, d bob.Dialect, start int) ([]any, error) {
vals := make([]bob.Expression, 7) vals := make([]bob.Expression, 6)
if s.Created.IsValue() { if s.Created.IsValue() {
vals[0] = psql.Arg(s.Created.MustGet()) vals[0] = psql.Arg(s.Created.MustGet())
} else { } else {
@ -190,18 +180,12 @@ func (s *FeatureSetter) Apply(q *dialect.InsertQuery) {
vals[4] = psql.Raw("DEFAULT") vals[4] = psql.Raw("DEFAULT")
} }
if s.SiteVersion.IsValue() { if !s.Location.IsUnset() {
vals[5] = psql.Arg(s.SiteVersion.MustGet()) vals[5] = psql.Arg(s.Location.MustGetNull())
} else { } else {
vals[5] = psql.Raw("DEFAULT") vals[5] = psql.Raw("DEFAULT")
} }
if !s.Location.IsUnset() {
vals[6] = psql.Arg(s.Location.MustGetNull())
} else {
vals[6] = psql.Raw("DEFAULT")
}
return bob.ExpressSlice(ctx, w, d, start, vals, "", ", ", "") return bob.ExpressSlice(ctx, w, d, start, vals, "", ", ", "")
})) }))
} }
@ -211,7 +195,7 @@ func (s FeatureSetter) UpdateMod() bob.Mod[*dialect.UpdateQuery] {
} }
func (s FeatureSetter) Expressions(prefix ...string) []bob.Expression { func (s FeatureSetter) Expressions(prefix ...string) []bob.Expression {
exprs := make([]bob.Expression, 0, 7) exprs := make([]bob.Expression, 0, 6)
if s.Created.IsValue() { if s.Created.IsValue() {
exprs = append(exprs, expr.Join{Sep: " = ", Exprs: []bob.Expression{ exprs = append(exprs, expr.Join{Sep: " = ", Exprs: []bob.Expression{
@ -248,13 +232,6 @@ func (s FeatureSetter) Expressions(prefix ...string) []bob.Expression {
}}) }})
} }
if s.SiteVersion.IsValue() {
exprs = append(exprs, expr.Join{Sep: " = ", Exprs: []bob.Expression{
psql.Quote(append(prefix, "site_version")...),
psql.Arg(s.SiteVersion),
}})
}
if !s.Location.IsUnset() { if !s.Location.IsUnset() {
exprs = append(exprs, expr.Join{Sep: " = ", Exprs: []bob.Expression{ exprs = append(exprs, expr.Join{Sep: " = ", Exprs: []bob.Expression{
psql.Quote(append(prefix, "location")...), psql.Quote(append(prefix, "location")...),
@ -539,28 +516,24 @@ func (os FeatureSlice) Organization(mods ...bob.Mod[*dialect.SelectQuery]) Organ
// Site starts a query for related objects on site // Site starts a query for related objects on site
func (o *Feature) Site(mods ...bob.Mod[*dialect.SelectQuery]) SitesQuery { func (o *Feature) Site(mods ...bob.Mod[*dialect.SelectQuery]) SitesQuery {
return Sites.Query(append(mods, return Sites.Query(append(mods,
sm.Where(Sites.Columns.ID.EQ(psql.Arg(o.SiteID))), sm.Where(Sites.Columns.Version.EQ(psql.Arg(o.SiteVersion))), sm.Where(Sites.Columns.ID.EQ(psql.Arg(o.SiteID))),
)...) )...)
} }
func (os FeatureSlice) Site(mods ...bob.Mod[*dialect.SelectQuery]) SitesQuery { func (os FeatureSlice) Site(mods ...bob.Mod[*dialect.SelectQuery]) SitesQuery {
pkSiteID := make(pgtypes.Array[int32], 0, len(os)) pkSiteID := make(pgtypes.Array[int32], 0, len(os))
pkSiteVersion := make(pgtypes.Array[int32], 0, len(os))
for _, o := range os { for _, o := range os {
if o == nil { if o == nil {
continue continue
} }
pkSiteID = append(pkSiteID, o.SiteID) pkSiteID = append(pkSiteID, o.SiteID)
pkSiteVersion = append(pkSiteVersion, o.SiteVersion)
} }
PKArgExpr := psql.Select(sm.Columns( PKArgExpr := psql.Select(sm.Columns(
psql.F("unnest", psql.Cast(psql.Arg(pkSiteID), "integer[]")), psql.F("unnest", psql.Cast(psql.Arg(pkSiteID), "integer[]")),
psql.F("unnest", psql.Cast(psql.Arg(pkSiteVersion), "integer[]")),
)) ))
return Sites.Query(append(mods, return Sites.Query(append(mods,
sm.Where(psql.Group(Sites.Columns.ID, Sites.Columns.Version).OP("IN", PKArgExpr)), sm.Where(psql.Group(Sites.Columns.ID).OP("IN", PKArgExpr)),
)...) )...)
} }
@ -686,8 +659,7 @@ func (feature0 *Feature) AttachOrganization(ctx context.Context, exec bob.Execut
func attachFeatureSite0(ctx context.Context, exec bob.Executor, count int, feature0 *Feature, site1 *Site) (*Feature, error) { func attachFeatureSite0(ctx context.Context, exec bob.Executor, count int, feature0 *Feature, site1 *Site) (*Feature, error) {
setter := &FeatureSetter{ setter := &FeatureSetter{
SiteID: omit.From(site1.ID), SiteID: omit.From(site1.ID),
SiteVersion: omit.From(site1.Version),
} }
err := feature0.Update(ctx, exec, setter) err := feature0.Update(ctx, exec, setter)
@ -793,7 +765,6 @@ type featureWhere[Q psql.Filterable] struct {
ID psql.WhereMod[Q, int32] ID psql.WhereMod[Q, int32]
OrganizationID psql.WhereMod[Q, int32] OrganizationID psql.WhereMod[Q, int32]
SiteID psql.WhereMod[Q, int32] SiteID psql.WhereMod[Q, int32]
SiteVersion psql.WhereMod[Q, int32]
Location psql.WhereNullMod[Q, string] Location psql.WhereNullMod[Q, string]
} }
@ -808,7 +779,6 @@ func buildFeatureWhere[Q psql.Filterable](cols featureColumns) featureWhere[Q] {
ID: psql.Where[Q, int32](cols.ID), ID: psql.Where[Q, int32](cols.ID),
OrganizationID: psql.Where[Q, int32](cols.OrganizationID), OrganizationID: psql.Where[Q, int32](cols.OrganizationID),
SiteID: psql.Where[Q, int32](cols.SiteID), SiteID: psql.Where[Q, int32](cols.SiteID),
SiteVersion: psql.Where[Q, int32](cols.SiteVersion),
Location: psql.WhereNull[Q, string](cols.Location), Location: psql.WhereNull[Q, string](cols.Location),
} }
} }
@ -914,8 +884,8 @@ func buildFeaturePreloader() featurePreloader {
{ {
From: Features, From: Features,
To: Sites, To: Sites,
FromColumns: []string{"site_id", "site_version"}, FromColumns: []string{"site_id"},
ToColumns: []string{"id", "version"}, ToColumns: []string{"id"},
}, },
}, },
}, Sites.Columns.Names(), opts...) }, Sites.Columns.Names(), opts...)
@ -1131,10 +1101,6 @@ func (os FeatureSlice) LoadSite(ctx context.Context, exec bob.Executor, mods ...
continue continue
} }
if !(o.SiteVersion == rel.Version) {
continue
}
rel.R.Features = append(rel.R.Features, o) rel.R.Features = append(rel.R.Features, o)
o.R.Site = rel o.R.Site = rel

View file

@ -31,7 +31,6 @@ type Lead struct {
ID int32 `db:"id,pk" ` ID int32 `db:"id,pk" `
OrganizationID int32 `db:"organization_id" ` OrganizationID int32 `db:"organization_id" `
SiteID null.Val[int32] `db:"site_id" ` SiteID null.Val[int32] `db:"site_id" `
SiteVersion null.Val[int32] `db:"site_version" `
Type enums.Leadtype `db:"type_" ` Type enums.Leadtype `db:"type_" `
R leadR `db:"-" ` R leadR `db:"-" `
@ -52,13 +51,13 @@ type leadR struct {
ComplianceReportRequests ComplianceReportRequestSlice // compliance_report_request.compliance_report_request_lead_id_fkey ComplianceReportRequests ComplianceReportRequestSlice // compliance_report_request.compliance_report_request_lead_id_fkey
CreatorUser *User // lead.lead_creator_fkey CreatorUser *User // lead.lead_creator_fkey
Organization *Organization // lead.lead_organization_id_fkey Organization *Organization // lead.lead_organization_id_fkey
Site *Site // lead.lead_site_id_site_version_fkey Site *Site // lead.lead_site_id_fkey
} }
func buildLeadColumns(alias string) leadColumns { func buildLeadColumns(alias string) leadColumns {
return leadColumns{ return leadColumns{
ColumnsExpr: expr.NewColumnsExpr( ColumnsExpr: expr.NewColumnsExpr(
"created", "creator", "id", "organization_id", "site_id", "site_version", "type_", "created", "creator", "id", "organization_id", "site_id", "type_",
).WithParent("lead"), ).WithParent("lead"),
tableAlias: alias, tableAlias: alias,
Created: psql.Quote(alias, "created"), Created: psql.Quote(alias, "created"),
@ -66,7 +65,6 @@ func buildLeadColumns(alias string) leadColumns {
ID: psql.Quote(alias, "id"), ID: psql.Quote(alias, "id"),
OrganizationID: psql.Quote(alias, "organization_id"), OrganizationID: psql.Quote(alias, "organization_id"),
SiteID: psql.Quote(alias, "site_id"), SiteID: psql.Quote(alias, "site_id"),
SiteVersion: psql.Quote(alias, "site_version"),
Type: psql.Quote(alias, "type_"), Type: psql.Quote(alias, "type_"),
} }
} }
@ -79,7 +77,6 @@ type leadColumns struct {
ID psql.Expression ID psql.Expression
OrganizationID psql.Expression OrganizationID psql.Expression
SiteID psql.Expression SiteID psql.Expression
SiteVersion psql.Expression
Type psql.Expression Type psql.Expression
} }
@ -100,12 +97,11 @@ type LeadSetter struct {
ID omit.Val[int32] `db:"id,pk" ` ID omit.Val[int32] `db:"id,pk" `
OrganizationID omit.Val[int32] `db:"organization_id" ` OrganizationID omit.Val[int32] `db:"organization_id" `
SiteID omitnull.Val[int32] `db:"site_id" ` SiteID omitnull.Val[int32] `db:"site_id" `
SiteVersion omitnull.Val[int32] `db:"site_version" `
Type omit.Val[enums.Leadtype] `db:"type_" ` Type omit.Val[enums.Leadtype] `db:"type_" `
} }
func (s LeadSetter) SetColumns() []string { func (s LeadSetter) SetColumns() []string {
vals := make([]string, 0, 7) vals := make([]string, 0, 6)
if s.Created.IsValue() { if s.Created.IsValue() {
vals = append(vals, "created") vals = append(vals, "created")
} }
@ -121,9 +117,6 @@ func (s LeadSetter) SetColumns() []string {
if !s.SiteID.IsUnset() { if !s.SiteID.IsUnset() {
vals = append(vals, "site_id") vals = append(vals, "site_id")
} }
if !s.SiteVersion.IsUnset() {
vals = append(vals, "site_version")
}
if s.Type.IsValue() { if s.Type.IsValue() {
vals = append(vals, "type_") vals = append(vals, "type_")
} }
@ -146,9 +139,6 @@ func (s LeadSetter) Overwrite(t *Lead) {
if !s.SiteID.IsUnset() { if !s.SiteID.IsUnset() {
t.SiteID = s.SiteID.MustGetNull() t.SiteID = s.SiteID.MustGetNull()
} }
if !s.SiteVersion.IsUnset() {
t.SiteVersion = s.SiteVersion.MustGetNull()
}
if s.Type.IsValue() { if s.Type.IsValue() {
t.Type = s.Type.MustGet() t.Type = s.Type.MustGet()
} }
@ -160,7 +150,7 @@ func (s *LeadSetter) Apply(q *dialect.InsertQuery) {
}) })
q.AppendValues(bob.ExpressionFunc(func(ctx context.Context, w io.StringWriter, d bob.Dialect, start int) ([]any, error) { q.AppendValues(bob.ExpressionFunc(func(ctx context.Context, w io.StringWriter, d bob.Dialect, start int) ([]any, error) {
vals := make([]bob.Expression, 7) vals := make([]bob.Expression, 6)
if s.Created.IsValue() { if s.Created.IsValue() {
vals[0] = psql.Arg(s.Created.MustGet()) vals[0] = psql.Arg(s.Created.MustGet())
} else { } else {
@ -191,18 +181,12 @@ func (s *LeadSetter) Apply(q *dialect.InsertQuery) {
vals[4] = psql.Raw("DEFAULT") vals[4] = psql.Raw("DEFAULT")
} }
if !s.SiteVersion.IsUnset() { if s.Type.IsValue() {
vals[5] = psql.Arg(s.SiteVersion.MustGetNull()) vals[5] = psql.Arg(s.Type.MustGet())
} else { } else {
vals[5] = psql.Raw("DEFAULT") vals[5] = psql.Raw("DEFAULT")
} }
if s.Type.IsValue() {
vals[6] = psql.Arg(s.Type.MustGet())
} else {
vals[6] = psql.Raw("DEFAULT")
}
return bob.ExpressSlice(ctx, w, d, start, vals, "", ", ", "") return bob.ExpressSlice(ctx, w, d, start, vals, "", ", ", "")
})) }))
} }
@ -212,7 +196,7 @@ func (s LeadSetter) UpdateMod() bob.Mod[*dialect.UpdateQuery] {
} }
func (s LeadSetter) Expressions(prefix ...string) []bob.Expression { func (s LeadSetter) Expressions(prefix ...string) []bob.Expression {
exprs := make([]bob.Expression, 0, 7) exprs := make([]bob.Expression, 0, 6)
if s.Created.IsValue() { if s.Created.IsValue() {
exprs = append(exprs, expr.Join{Sep: " = ", Exprs: []bob.Expression{ exprs = append(exprs, expr.Join{Sep: " = ", Exprs: []bob.Expression{
@ -249,13 +233,6 @@ func (s LeadSetter) Expressions(prefix ...string) []bob.Expression {
}}) }})
} }
if !s.SiteVersion.IsUnset() {
exprs = append(exprs, expr.Join{Sep: " = ", Exprs: []bob.Expression{
psql.Quote(append(prefix, "site_version")...),
psql.Arg(s.SiteVersion),
}})
}
if s.Type.IsValue() { if s.Type.IsValue() {
exprs = append(exprs, expr.Join{Sep: " = ", Exprs: []bob.Expression{ exprs = append(exprs, expr.Join{Sep: " = ", Exprs: []bob.Expression{
psql.Quote(append(prefix, "type_")...), psql.Quote(append(prefix, "type_")...),
@ -564,28 +541,24 @@ func (os LeadSlice) Organization(mods ...bob.Mod[*dialect.SelectQuery]) Organiza
// Site starts a query for related objects on site // Site starts a query for related objects on site
func (o *Lead) Site(mods ...bob.Mod[*dialect.SelectQuery]) SitesQuery { func (o *Lead) Site(mods ...bob.Mod[*dialect.SelectQuery]) SitesQuery {
return Sites.Query(append(mods, return Sites.Query(append(mods,
sm.Where(Sites.Columns.ID.EQ(psql.Arg(o.SiteID))), sm.Where(Sites.Columns.Version.EQ(psql.Arg(o.SiteVersion))), sm.Where(Sites.Columns.ID.EQ(psql.Arg(o.SiteID))),
)...) )...)
} }
func (os LeadSlice) Site(mods ...bob.Mod[*dialect.SelectQuery]) SitesQuery { func (os LeadSlice) Site(mods ...bob.Mod[*dialect.SelectQuery]) SitesQuery {
pkSiteID := make(pgtypes.Array[null.Val[int32]], 0, len(os)) pkSiteID := make(pgtypes.Array[null.Val[int32]], 0, len(os))
pkSiteVersion := make(pgtypes.Array[null.Val[int32]], 0, len(os))
for _, o := range os { for _, o := range os {
if o == nil { if o == nil {
continue continue
} }
pkSiteID = append(pkSiteID, o.SiteID) pkSiteID = append(pkSiteID, o.SiteID)
pkSiteVersion = append(pkSiteVersion, o.SiteVersion)
} }
PKArgExpr := psql.Select(sm.Columns( PKArgExpr := psql.Select(sm.Columns(
psql.F("unnest", psql.Cast(psql.Arg(pkSiteID), "integer[]")), psql.F("unnest", psql.Cast(psql.Arg(pkSiteID), "integer[]")),
psql.F("unnest", psql.Cast(psql.Arg(pkSiteVersion), "integer[]")),
)) ))
return Sites.Query(append(mods, return Sites.Query(append(mods,
sm.Where(psql.Group(Sites.Columns.ID, Sites.Columns.Version).OP("IN", PKArgExpr)), sm.Where(psql.Group(Sites.Columns.ID).OP("IN", PKArgExpr)),
)...) )...)
} }
@ -755,8 +728,7 @@ func (lead0 *Lead) AttachOrganization(ctx context.Context, exec bob.Executor, or
func attachLeadSite0(ctx context.Context, exec bob.Executor, count int, lead0 *Lead, site1 *Site) (*Lead, error) { func attachLeadSite0(ctx context.Context, exec bob.Executor, count int, lead0 *Lead, site1 *Site) (*Lead, error) {
setter := &LeadSetter{ setter := &LeadSetter{
SiteID: omitnull.From(site1.ID), SiteID: omitnull.From(site1.ID),
SiteVersion: omitnull.From(site1.Version),
} }
err := lead0.Update(ctx, exec, setter) err := lead0.Update(ctx, exec, setter)
@ -808,7 +780,6 @@ type leadWhere[Q psql.Filterable] struct {
ID psql.WhereMod[Q, int32] ID psql.WhereMod[Q, int32]
OrganizationID psql.WhereMod[Q, int32] OrganizationID psql.WhereMod[Q, int32]
SiteID psql.WhereNullMod[Q, int32] SiteID psql.WhereNullMod[Q, int32]
SiteVersion psql.WhereNullMod[Q, int32]
Type psql.WhereMod[Q, enums.Leadtype] Type psql.WhereMod[Q, enums.Leadtype]
} }
@ -823,7 +794,6 @@ func buildLeadWhere[Q psql.Filterable](cols leadColumns) leadWhere[Q] {
ID: psql.Where[Q, int32](cols.ID), ID: psql.Where[Q, int32](cols.ID),
OrganizationID: psql.Where[Q, int32](cols.OrganizationID), OrganizationID: psql.Where[Q, int32](cols.OrganizationID),
SiteID: psql.WhereNull[Q, int32](cols.SiteID), SiteID: psql.WhereNull[Q, int32](cols.SiteID),
SiteVersion: psql.WhereNull[Q, int32](cols.SiteVersion),
Type: psql.Where[Q, enums.Leadtype](cols.Type), Type: psql.Where[Q, enums.Leadtype](cols.Type),
} }
} }
@ -930,8 +900,8 @@ func buildLeadPreloader() leadPreloader {
{ {
From: Leads, From: Leads,
To: Sites, To: Sites,
FromColumns: []string{"site_id", "site_version"}, FromColumns: []string{"site_id"},
ToColumns: []string{"id", "version"}, ToColumns: []string{"id"},
}, },
}, },
}, Sites.Columns.Names(), opts...) }, Sites.Columns.Names(), opts...)
@ -1200,13 +1170,6 @@ func (os LeadSlice) LoadSite(ctx context.Context, exec bob.Executor, mods ...bob
if !(o.SiteID.IsValue() && o.SiteID.MustGet() == rel.ID) { if !(o.SiteID.IsValue() && o.SiteID.MustGet() == rel.ID) {
continue continue
} }
if !o.SiteVersion.IsValue() {
continue
}
if !(o.SiteVersion.IsValue() && o.SiteVersion.MustGet() == rel.Version) {
continue
}
rel.R.Leads = append(rel.R.Leads, o) rel.R.Leads = append(rel.R.Leads, o)

View file

@ -64,6 +64,8 @@ type PublicreportNuisance struct {
Location null.Val[string] `db:"location" ` Location null.Val[string] `db:"location" `
AddressNumber string `db:"address_number" ` AddressNumber string `db:"address_number" `
AddressID null.Val[int32] `db:"address_id" ` AddressID null.Val[int32] `db:"address_id" `
Reviewed null.Val[time.Time] `db:"reviewed" `
ReviewerID null.Val[int32] `db:"reviewer_id" `
R publicreportNuisanceR `db:"-" ` R publicreportNuisanceR `db:"-" `
} }
@ -84,13 +86,14 @@ type publicreportNuisanceR struct {
NotifyPhoneNuisances PublicreportNotifyPhoneNuisanceSlice // publicreport.notify_phone_nuisance.notify_phone_nuisance_nuisance_id_fkey NotifyPhoneNuisances PublicreportNotifyPhoneNuisanceSlice // publicreport.notify_phone_nuisance.notify_phone_nuisance_nuisance_id_fkey
Address *Address // publicreport.nuisance.nuisance_address_id_fkey Address *Address // publicreport.nuisance.nuisance_address_id_fkey
Organization *Organization // publicreport.nuisance.nuisance_organization_id_fkey Organization *Organization // publicreport.nuisance.nuisance_organization_id_fkey
ReviewerUser *User // publicreport.nuisance.nuisance_reviewer_id_fkey
Images PublicreportImageSlice // publicreport.nuisance_image.nuisance_image_image_id_fkeypublicreport.nuisance_image.nuisance_image_nuisance_id_fkey Images PublicreportImageSlice // publicreport.nuisance_image.nuisance_image_image_id_fkeypublicreport.nuisance_image.nuisance_image_nuisance_id_fkey
} }
func buildPublicreportNuisanceColumns(alias string) publicreportNuisanceColumns { func buildPublicreportNuisanceColumns(alias string) publicreportNuisanceColumns {
return publicreportNuisanceColumns{ return publicreportNuisanceColumns{
ColumnsExpr: expr.NewColumnsExpr( ColumnsExpr: expr.NewColumnsExpr(
"id", "additional_info", "created", "duration", "source_container", "source_description", "source_stagnant", "public_id", "reporter_email", "reporter_name", "reporter_phone", "address_raw", "status", "organization_id", "source_gutter", "h3cell", "address_country", "address_locality", "address_postal_code", "address_region", "address_street", "is_location_backyard", "is_location_frontyard", "is_location_garden", "is_location_other", "is_location_pool", "map_zoom", "tod_early", "tod_day", "tod_evening", "tod_night", "latlng_accuracy_type", "latlng_accuracy_value", "reporter_contact_consent", "location", "address_number", "address_id", "id", "additional_info", "created", "duration", "source_container", "source_description", "source_stagnant", "public_id", "reporter_email", "reporter_name", "reporter_phone", "address_raw", "status", "organization_id", "source_gutter", "h3cell", "address_country", "address_locality", "address_postal_code", "address_region", "address_street", "is_location_backyard", "is_location_frontyard", "is_location_garden", "is_location_other", "is_location_pool", "map_zoom", "tod_early", "tod_day", "tod_evening", "tod_night", "latlng_accuracy_type", "latlng_accuracy_value", "reporter_contact_consent", "location", "address_number", "address_id", "reviewed", "reviewer_id",
).WithParent("publicreport.nuisance"), ).WithParent("publicreport.nuisance"),
tableAlias: alias, tableAlias: alias,
ID: psql.Quote(alias, "id"), ID: psql.Quote(alias, "id"),
@ -130,6 +133,8 @@ func buildPublicreportNuisanceColumns(alias string) publicreportNuisanceColumns
Location: psql.Quote(alias, "location"), Location: psql.Quote(alias, "location"),
AddressNumber: psql.Quote(alias, "address_number"), AddressNumber: psql.Quote(alias, "address_number"),
AddressID: psql.Quote(alias, "address_id"), AddressID: psql.Quote(alias, "address_id"),
Reviewed: psql.Quote(alias, "reviewed"),
ReviewerID: psql.Quote(alias, "reviewer_id"),
} }
} }
@ -173,6 +178,8 @@ type publicreportNuisanceColumns struct {
Location psql.Expression Location psql.Expression
AddressNumber psql.Expression AddressNumber psql.Expression
AddressID psql.Expression AddressID psql.Expression
Reviewed psql.Expression
ReviewerID psql.Expression
} }
func (c publicreportNuisanceColumns) Alias() string { func (c publicreportNuisanceColumns) Alias() string {
@ -224,10 +231,12 @@ type PublicreportNuisanceSetter struct {
Location omitnull.Val[string] `db:"location" ` Location omitnull.Val[string] `db:"location" `
AddressNumber omit.Val[string] `db:"address_number" ` AddressNumber omit.Val[string] `db:"address_number" `
AddressID omitnull.Val[int32] `db:"address_id" ` AddressID omitnull.Val[int32] `db:"address_id" `
Reviewed omitnull.Val[time.Time] `db:"reviewed" `
ReviewerID omitnull.Val[int32] `db:"reviewer_id" `
} }
func (s PublicreportNuisanceSetter) SetColumns() []string { func (s PublicreportNuisanceSetter) SetColumns() []string {
vals := make([]string, 0, 37) vals := make([]string, 0, 39)
if s.ID.IsValue() { if s.ID.IsValue() {
vals = append(vals, "id") vals = append(vals, "id")
} }
@ -339,6 +348,12 @@ func (s PublicreportNuisanceSetter) SetColumns() []string {
if !s.AddressID.IsUnset() { if !s.AddressID.IsUnset() {
vals = append(vals, "address_id") vals = append(vals, "address_id")
} }
if !s.Reviewed.IsUnset() {
vals = append(vals, "reviewed")
}
if !s.ReviewerID.IsUnset() {
vals = append(vals, "reviewer_id")
}
return vals return vals
} }
@ -454,6 +469,12 @@ func (s PublicreportNuisanceSetter) Overwrite(t *PublicreportNuisance) {
if !s.AddressID.IsUnset() { if !s.AddressID.IsUnset() {
t.AddressID = s.AddressID.MustGetNull() t.AddressID = s.AddressID.MustGetNull()
} }
if !s.Reviewed.IsUnset() {
t.Reviewed = s.Reviewed.MustGetNull()
}
if !s.ReviewerID.IsUnset() {
t.ReviewerID = s.ReviewerID.MustGetNull()
}
} }
func (s *PublicreportNuisanceSetter) Apply(q *dialect.InsertQuery) { func (s *PublicreportNuisanceSetter) Apply(q *dialect.InsertQuery) {
@ -462,7 +483,7 @@ func (s *PublicreportNuisanceSetter) Apply(q *dialect.InsertQuery) {
}) })
q.AppendValues(bob.ExpressionFunc(func(ctx context.Context, w io.StringWriter, d bob.Dialect, start int) ([]any, error) { q.AppendValues(bob.ExpressionFunc(func(ctx context.Context, w io.StringWriter, d bob.Dialect, start int) ([]any, error) {
vals := make([]bob.Expression, 37) vals := make([]bob.Expression, 39)
if s.ID.IsValue() { if s.ID.IsValue() {
vals[0] = psql.Arg(s.ID.MustGet()) vals[0] = psql.Arg(s.ID.MustGet())
} else { } else {
@ -685,6 +706,18 @@ func (s *PublicreportNuisanceSetter) Apply(q *dialect.InsertQuery) {
vals[36] = psql.Raw("DEFAULT") vals[36] = psql.Raw("DEFAULT")
} }
if !s.Reviewed.IsUnset() {
vals[37] = psql.Arg(s.Reviewed.MustGetNull())
} else {
vals[37] = psql.Raw("DEFAULT")
}
if !s.ReviewerID.IsUnset() {
vals[38] = psql.Arg(s.ReviewerID.MustGetNull())
} else {
vals[38] = psql.Raw("DEFAULT")
}
return bob.ExpressSlice(ctx, w, d, start, vals, "", ", ", "") return bob.ExpressSlice(ctx, w, d, start, vals, "", ", ", "")
})) }))
} }
@ -694,7 +727,7 @@ func (s PublicreportNuisanceSetter) UpdateMod() bob.Mod[*dialect.UpdateQuery] {
} }
func (s PublicreportNuisanceSetter) Expressions(prefix ...string) []bob.Expression { func (s PublicreportNuisanceSetter) Expressions(prefix ...string) []bob.Expression {
exprs := make([]bob.Expression, 0, 37) exprs := make([]bob.Expression, 0, 39)
if s.ID.IsValue() { if s.ID.IsValue() {
exprs = append(exprs, expr.Join{Sep: " = ", Exprs: []bob.Expression{ exprs = append(exprs, expr.Join{Sep: " = ", Exprs: []bob.Expression{
@ -955,6 +988,20 @@ func (s PublicreportNuisanceSetter) Expressions(prefix ...string) []bob.Expressi
}}) }})
} }
if !s.Reviewed.IsUnset() {
exprs = append(exprs, expr.Join{Sep: " = ", Exprs: []bob.Expression{
psql.Quote(append(prefix, "reviewed")...),
psql.Arg(s.Reviewed),
}})
}
if !s.ReviewerID.IsUnset() {
exprs = append(exprs, expr.Join{Sep: " = ", Exprs: []bob.Expression{
psql.Quote(append(prefix, "reviewer_id")...),
psql.Arg(s.ReviewerID),
}})
}
return exprs return exprs
} }
@ -1277,6 +1324,30 @@ func (os PublicreportNuisanceSlice) Organization(mods ...bob.Mod[*dialect.Select
)...) )...)
} }
// ReviewerUser starts a query for related objects on user_
func (o *PublicreportNuisance) ReviewerUser(mods ...bob.Mod[*dialect.SelectQuery]) UsersQuery {
return Users.Query(append(mods,
sm.Where(Users.Columns.ID.EQ(psql.Arg(o.ReviewerID))),
)...)
}
func (os PublicreportNuisanceSlice) ReviewerUser(mods ...bob.Mod[*dialect.SelectQuery]) UsersQuery {
pkReviewerID := make(pgtypes.Array[null.Val[int32]], 0, len(os))
for _, o := range os {
if o == nil {
continue
}
pkReviewerID = append(pkReviewerID, o.ReviewerID)
}
PKArgExpr := psql.Select(sm.Columns(
psql.F("unnest", psql.Cast(psql.Arg(pkReviewerID), "integer[]")),
))
return Users.Query(append(mods,
sm.Where(psql.Group(Users.Columns.ID).OP("IN", PKArgExpr)),
)...)
}
// Images starts a query for related objects on publicreport.image // Images starts a query for related objects on publicreport.image
func (o *PublicreportNuisance) Images(mods ...bob.Mod[*dialect.SelectQuery]) PublicreportImagesQuery { func (o *PublicreportNuisance) Images(mods ...bob.Mod[*dialect.SelectQuery]) PublicreportImagesQuery {
return PublicreportImages.Query(append(mods, return PublicreportImages.Query(append(mods,
@ -1538,6 +1609,54 @@ func (publicreportNuisance0 *PublicreportNuisance) AttachOrganization(ctx contex
return nil return nil
} }
func attachPublicreportNuisanceReviewerUser0(ctx context.Context, exec bob.Executor, count int, publicreportNuisance0 *PublicreportNuisance, user1 *User) (*PublicreportNuisance, error) {
setter := &PublicreportNuisanceSetter{
ReviewerID: omitnull.From(user1.ID),
}
err := publicreportNuisance0.Update(ctx, exec, setter)
if err != nil {
return nil, fmt.Errorf("attachPublicreportNuisanceReviewerUser0: %w", err)
}
return publicreportNuisance0, nil
}
func (publicreportNuisance0 *PublicreportNuisance) InsertReviewerUser(ctx context.Context, exec bob.Executor, related *UserSetter) error {
var err error
user1, err := Users.Insert(related).One(ctx, exec)
if err != nil {
return fmt.Errorf("inserting related objects: %w", err)
}
_, err = attachPublicreportNuisanceReviewerUser0(ctx, exec, 1, publicreportNuisance0, user1)
if err != nil {
return err
}
publicreportNuisance0.R.ReviewerUser = user1
user1.R.ReviewerNuisances = append(user1.R.ReviewerNuisances, publicreportNuisance0)
return nil
}
func (publicreportNuisance0 *PublicreportNuisance) AttachReviewerUser(ctx context.Context, exec bob.Executor, user1 *User) error {
var err error
_, err = attachPublicreportNuisanceReviewerUser0(ctx, exec, 1, publicreportNuisance0, user1)
if err != nil {
return err
}
publicreportNuisance0.R.ReviewerUser = user1
user1.R.ReviewerNuisances = append(user1.R.ReviewerNuisances, publicreportNuisance0)
return nil
}
func attachPublicreportNuisanceImages0(ctx context.Context, exec bob.Executor, count int, publicreportNuisance0 *PublicreportNuisance, publicreportImages2 PublicreportImageSlice) (PublicreportNuisanceImageSlice, error) { func attachPublicreportNuisanceImages0(ctx context.Context, exec bob.Executor, count int, publicreportNuisance0 *PublicreportNuisance, publicreportImages2 PublicreportImageSlice) (PublicreportNuisanceImageSlice, error) {
setters := make([]*PublicreportNuisanceImageSetter, count) setters := make([]*PublicreportNuisanceImageSetter, count)
for i := range count { for i := range count {
@ -1641,6 +1760,8 @@ type publicreportNuisanceWhere[Q psql.Filterable] struct {
Location psql.WhereNullMod[Q, string] Location psql.WhereNullMod[Q, string]
AddressNumber psql.WhereMod[Q, string] AddressNumber psql.WhereMod[Q, string]
AddressID psql.WhereNullMod[Q, int32] AddressID psql.WhereNullMod[Q, int32]
Reviewed psql.WhereNullMod[Q, time.Time]
ReviewerID psql.WhereNullMod[Q, int32]
} }
func (publicreportNuisanceWhere[Q]) AliasedAs(alias string) publicreportNuisanceWhere[Q] { func (publicreportNuisanceWhere[Q]) AliasedAs(alias string) publicreportNuisanceWhere[Q] {
@ -1686,6 +1807,8 @@ func buildPublicreportNuisanceWhere[Q psql.Filterable](cols publicreportNuisance
Location: psql.WhereNull[Q, string](cols.Location), Location: psql.WhereNull[Q, string](cols.Location),
AddressNumber: psql.Where[Q, string](cols.AddressNumber), AddressNumber: psql.Where[Q, string](cols.AddressNumber),
AddressID: psql.WhereNull[Q, int32](cols.AddressID), AddressID: psql.WhereNull[Q, int32](cols.AddressID),
Reviewed: psql.WhereNull[Q, time.Time](cols.Reviewed),
ReviewerID: psql.WhereNull[Q, int32](cols.ReviewerID),
} }
} }
@ -1747,6 +1870,18 @@ func (o *PublicreportNuisance) Preload(name string, retrieved any) error {
rel.R.Nuisances = PublicreportNuisanceSlice{o} rel.R.Nuisances = PublicreportNuisanceSlice{o}
} }
return nil return nil
case "ReviewerUser":
rel, ok := retrieved.(*User)
if !ok {
return fmt.Errorf("publicreportNuisance cannot load %T as %q", retrieved, name)
}
o.R.ReviewerUser = rel
if rel != nil {
rel.R.ReviewerNuisances = PublicreportNuisanceSlice{o}
}
return nil
case "Images": case "Images":
rels, ok := retrieved.(PublicreportImageSlice) rels, ok := retrieved.(PublicreportImageSlice)
if !ok { if !ok {
@ -1769,6 +1904,7 @@ func (o *PublicreportNuisance) Preload(name string, retrieved any) error {
type publicreportNuisancePreloader struct { type publicreportNuisancePreloader struct {
Address func(...psql.PreloadOption) psql.Preloader Address func(...psql.PreloadOption) psql.Preloader
Organization func(...psql.PreloadOption) psql.Preloader Organization func(...psql.PreloadOption) psql.Preloader
ReviewerUser func(...psql.PreloadOption) psql.Preloader
} }
func buildPublicreportNuisancePreloader() publicreportNuisancePreloader { func buildPublicreportNuisancePreloader() publicreportNuisancePreloader {
@ -1799,6 +1935,19 @@ func buildPublicreportNuisancePreloader() publicreportNuisancePreloader {
}, },
}, Organizations.Columns.Names(), opts...) }, Organizations.Columns.Names(), opts...)
}, },
ReviewerUser: func(opts ...psql.PreloadOption) psql.Preloader {
return psql.Preload[*User, UserSlice](psql.PreloadRel{
Name: "ReviewerUser",
Sides: []psql.PreloadSide{
{
From: PublicreportNuisances,
To: Users,
FromColumns: []string{"reviewer_id"},
ToColumns: []string{"id"},
},
},
}, Users.Columns.Names(), opts...)
},
} }
} }
@ -1807,6 +1956,7 @@ type publicreportNuisanceThenLoader[Q orm.Loadable] struct {
NotifyPhoneNuisances func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q] NotifyPhoneNuisances func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
Address func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q] Address func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
Organization func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q] Organization func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
ReviewerUser func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
Images func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q] Images func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
} }
@ -1823,6 +1973,9 @@ func buildPublicreportNuisanceThenLoader[Q orm.Loadable]() publicreportNuisanceT
type OrganizationLoadInterface interface { type OrganizationLoadInterface interface {
LoadOrganization(context.Context, bob.Executor, ...bob.Mod[*dialect.SelectQuery]) error LoadOrganization(context.Context, bob.Executor, ...bob.Mod[*dialect.SelectQuery]) error
} }
type ReviewerUserLoadInterface interface {
LoadReviewerUser(context.Context, bob.Executor, ...bob.Mod[*dialect.SelectQuery]) error
}
type ImagesLoadInterface interface { type ImagesLoadInterface interface {
LoadImages(context.Context, bob.Executor, ...bob.Mod[*dialect.SelectQuery]) error LoadImages(context.Context, bob.Executor, ...bob.Mod[*dialect.SelectQuery]) error
} }
@ -1852,6 +2005,12 @@ func buildPublicreportNuisanceThenLoader[Q orm.Loadable]() publicreportNuisanceT
return retrieved.LoadOrganization(ctx, exec, mods...) return retrieved.LoadOrganization(ctx, exec, mods...)
}, },
), ),
ReviewerUser: thenLoadBuilder[Q](
"ReviewerUser",
func(ctx context.Context, exec bob.Executor, retrieved ReviewerUserLoadInterface, mods ...bob.Mod[*dialect.SelectQuery]) error {
return retrieved.LoadReviewerUser(ctx, exec, mods...)
},
),
Images: thenLoadBuilder[Q]( Images: thenLoadBuilder[Q](
"Images", "Images",
func(ctx context.Context, exec bob.Executor, retrieved ImagesLoadInterface, mods ...bob.Mod[*dialect.SelectQuery]) error { func(ctx context.Context, exec bob.Executor, retrieved ImagesLoadInterface, mods ...bob.Mod[*dialect.SelectQuery]) error {
@ -2093,6 +2252,61 @@ func (os PublicreportNuisanceSlice) LoadOrganization(ctx context.Context, exec b
return nil return nil
} }
// LoadReviewerUser loads the publicreportNuisance's ReviewerUser into the .R struct
func (o *PublicreportNuisance) LoadReviewerUser(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
if o == nil {
return nil
}
// Reset the relationship
o.R.ReviewerUser = nil
related, err := o.ReviewerUser(mods...).One(ctx, exec)
if err != nil {
return err
}
related.R.ReviewerNuisances = PublicreportNuisanceSlice{o}
o.R.ReviewerUser = related
return nil
}
// LoadReviewerUser loads the publicreportNuisance's ReviewerUser into the .R struct
func (os PublicreportNuisanceSlice) LoadReviewerUser(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
if len(os) == 0 {
return nil
}
users, err := os.ReviewerUser(mods...).All(ctx, exec)
if err != nil {
return err
}
for _, o := range os {
if o == nil {
continue
}
for _, rel := range users {
if !o.ReviewerID.IsValue() {
continue
}
if !(o.ReviewerID.IsValue() && o.ReviewerID.MustGet() == rel.ID) {
continue
}
rel.R.ReviewerNuisances = append(rel.R.ReviewerNuisances, o)
o.R.ReviewerUser = rel
break
}
}
return nil
}
// LoadImages loads the publicreportNuisance's Images into the .R struct // LoadImages loads the publicreportNuisance's Images into the .R struct
func (o *PublicreportNuisance) LoadImages(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error { func (o *PublicreportNuisance) LoadImages(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
if o == nil { if o == nil {

View file

@ -0,0 +1,140 @@
// Code generated by BobGen psql v0.42.5. DO NOT EDIT.
// This file is meant to be re-generated in place and/or deleted at any time.
package models
import (
"context"
"github.com/Gleipnir-Technology/bob"
"github.com/Gleipnir-Technology/bob/dialect/psql"
"github.com/Gleipnir-Technology/bob/expr"
"github.com/aarondl/opt/null"
)
// PublicreportOrganizationReportCount is an object representing the database table.
type PublicreportOrganizationReportCount struct {
OrganizationID null.Val[int32] `db:"organization_id" `
NuisanceReported null.Val[int64] `db:"nuisance_reported" `
NuisanceReviewed null.Val[int64] `db:"nuisance_reviewed" `
NuisanceScheduled null.Val[int64] `db:"nuisance_scheduled" `
NuisanceTreated null.Val[int64] `db:"nuisance_treated" `
NuisanceInvalidated null.Val[int64] `db:"nuisance_invalidated" `
WaterReported null.Val[int64] `db:"water_reported" `
WaterReviewed null.Val[int64] `db:"water_reviewed" `
WaterScheduled null.Val[int64] `db:"water_scheduled" `
WaterTreated null.Val[int64] `db:"water_treated" `
WaterInvalidated null.Val[int64] `db:"water_invalidated" `
}
// PublicreportOrganizationReportCountSlice is an alias for a slice of pointers to PublicreportOrganizationReportCount.
// This should almost always be used instead of []*PublicreportOrganizationReportCount.
type PublicreportOrganizationReportCountSlice []*PublicreportOrganizationReportCount
// PublicreportOrganizationReportCounts contains methods to work with the organization_report_count view
var PublicreportOrganizationReportCounts = psql.NewViewx[*PublicreportOrganizationReportCount, PublicreportOrganizationReportCountSlice]("publicreport", "organization_report_count", buildPublicreportOrganizationReportCountColumns("publicreport.organization_report_count"))
// PublicreportOrganizationReportCountsQuery is a query on the organization_report_count view
type PublicreportOrganizationReportCountsQuery = *psql.ViewQuery[*PublicreportOrganizationReportCount, PublicreportOrganizationReportCountSlice]
func buildPublicreportOrganizationReportCountColumns(alias string) publicreportOrganizationReportCountColumns {
return publicreportOrganizationReportCountColumns{
ColumnsExpr: expr.NewColumnsExpr(
"organization_id", "nuisance_reported", "nuisance_reviewed", "nuisance_scheduled", "nuisance_treated", "nuisance_invalidated", "water_reported", "water_reviewed", "water_scheduled", "water_treated", "water_invalidated",
).WithParent("publicreport.organization_report_count"),
tableAlias: alias,
OrganizationID: psql.Quote(alias, "organization_id"),
NuisanceReported: psql.Quote(alias, "nuisance_reported"),
NuisanceReviewed: psql.Quote(alias, "nuisance_reviewed"),
NuisanceScheduled: psql.Quote(alias, "nuisance_scheduled"),
NuisanceTreated: psql.Quote(alias, "nuisance_treated"),
NuisanceInvalidated: psql.Quote(alias, "nuisance_invalidated"),
WaterReported: psql.Quote(alias, "water_reported"),
WaterReviewed: psql.Quote(alias, "water_reviewed"),
WaterScheduled: psql.Quote(alias, "water_scheduled"),
WaterTreated: psql.Quote(alias, "water_treated"),
WaterInvalidated: psql.Quote(alias, "water_invalidated"),
}
}
type publicreportOrganizationReportCountColumns struct {
expr.ColumnsExpr
tableAlias string
OrganizationID psql.Expression
NuisanceReported psql.Expression
NuisanceReviewed psql.Expression
NuisanceScheduled psql.Expression
NuisanceTreated psql.Expression
NuisanceInvalidated psql.Expression
WaterReported psql.Expression
WaterReviewed psql.Expression
WaterScheduled psql.Expression
WaterTreated psql.Expression
WaterInvalidated psql.Expression
}
func (c publicreportOrganizationReportCountColumns) Alias() string {
return c.tableAlias
}
func (publicreportOrganizationReportCountColumns) AliasedAs(alias string) publicreportOrganizationReportCountColumns {
return buildPublicreportOrganizationReportCountColumns(alias)
}
// AfterQueryHook is called after PublicreportOrganizationReportCount is retrieved from the database
func (o *PublicreportOrganizationReportCount) AfterQueryHook(ctx context.Context, exec bob.Executor, queryType bob.QueryType) error {
var err error
switch queryType {
case bob.QueryTypeSelect:
ctx, err = PublicreportOrganizationReportCounts.AfterSelectHooks.RunHooks(ctx, exec, PublicreportOrganizationReportCountSlice{o})
}
return err
}
// AfterQueryHook is called after PublicreportOrganizationReportCountSlice is retrieved from the database
func (o PublicreportOrganizationReportCountSlice) AfterQueryHook(ctx context.Context, exec bob.Executor, queryType bob.QueryType) error {
var err error
switch queryType {
case bob.QueryTypeSelect:
ctx, err = PublicreportOrganizationReportCounts.AfterSelectHooks.RunHooks(ctx, exec, o)
}
return err
}
type publicreportOrganizationReportCountWhere[Q psql.Filterable] struct {
OrganizationID psql.WhereNullMod[Q, int32]
NuisanceReported psql.WhereNullMod[Q, int64]
NuisanceReviewed psql.WhereNullMod[Q, int64]
NuisanceScheduled psql.WhereNullMod[Q, int64]
NuisanceTreated psql.WhereNullMod[Q, int64]
NuisanceInvalidated psql.WhereNullMod[Q, int64]
WaterReported psql.WhereNullMod[Q, int64]
WaterReviewed psql.WhereNullMod[Q, int64]
WaterScheduled psql.WhereNullMod[Q, int64]
WaterTreated psql.WhereNullMod[Q, int64]
WaterInvalidated psql.WhereNullMod[Q, int64]
}
func (publicreportOrganizationReportCountWhere[Q]) AliasedAs(alias string) publicreportOrganizationReportCountWhere[Q] {
return buildPublicreportOrganizationReportCountWhere[Q](buildPublicreportOrganizationReportCountColumns(alias))
}
func buildPublicreportOrganizationReportCountWhere[Q psql.Filterable](cols publicreportOrganizationReportCountColumns) publicreportOrganizationReportCountWhere[Q] {
return publicreportOrganizationReportCountWhere[Q]{
OrganizationID: psql.WhereNull[Q, int32](cols.OrganizationID),
NuisanceReported: psql.WhereNull[Q, int64](cols.NuisanceReported),
NuisanceReviewed: psql.WhereNull[Q, int64](cols.NuisanceReviewed),
NuisanceScheduled: psql.WhereNull[Q, int64](cols.NuisanceScheduled),
NuisanceTreated: psql.WhereNull[Q, int64](cols.NuisanceTreated),
NuisanceInvalidated: psql.WhereNull[Q, int64](cols.NuisanceInvalidated),
WaterReported: psql.WhereNull[Q, int64](cols.WaterReported),
WaterReviewed: psql.WhereNull[Q, int64](cols.WaterReviewed),
WaterScheduled: psql.WhereNull[Q, int64](cols.WaterScheduled),
WaterTreated: psql.WhereNull[Q, int64](cols.WaterTreated),
WaterInvalidated: psql.WhereNull[Q, int64](cols.WaterInvalidated),
}
}

View file

@ -63,6 +63,8 @@ type PublicreportWater struct {
Location null.Val[string] `db:"location" ` Location null.Val[string] `db:"location" `
AddressNumber string `db:"address_number" ` AddressNumber string `db:"address_number" `
AddressID null.Val[int32] `db:"address_id" ` AddressID null.Val[int32] `db:"address_id" `
Reviewed null.Val[time.Time] `db:"reviewed" `
ReviewerID null.Val[int32] `db:"reviewer_id" `
R publicreportWaterR `db:"-" ` R publicreportWaterR `db:"-" `
} }
@ -83,13 +85,14 @@ type publicreportWaterR struct {
NotifyPhoneWaters PublicreportNotifyPhoneWaterSlice // publicreport.notify_phone_water.notify_phone_pool_pool_id_fkey NotifyPhoneWaters PublicreportNotifyPhoneWaterSlice // publicreport.notify_phone_water.notify_phone_pool_pool_id_fkey
Address *Address // publicreport.water.pool_address_id_fkey Address *Address // publicreport.water.pool_address_id_fkey
Organization *Organization // publicreport.water.pool_organization_id_fkey Organization *Organization // publicreport.water.pool_organization_id_fkey
ReviewerUser *User // publicreport.water.water_reviewer_id_fkey
Images PublicreportImageSlice // publicreport.water_image.pool_image_image_id_fkeypublicreport.water_image.pool_image_pool_id_fkey Images PublicreportImageSlice // publicreport.water_image.pool_image_image_id_fkeypublicreport.water_image.pool_image_pool_id_fkey
} }
func buildPublicreportWaterColumns(alias string) publicreportWaterColumns { func buildPublicreportWaterColumns(alias string) publicreportWaterColumns {
return publicreportWaterColumns{ return publicreportWaterColumns{
ColumnsExpr: expr.NewColumnsExpr( ColumnsExpr: expr.NewColumnsExpr(
"id", "access_comments", "access_gate", "access_fence", "access_locked", "access_dog", "access_other", "address_raw", "address_country", "address_postal_code", "address_locality", "address_street", "address_region", "comments", "created", "h3cell", "has_adult", "has_larvae", "has_pupae", "map_zoom", "owner_email", "owner_name", "owner_phone", "public_id", "reporter_email", "reporter_name", "reporter_phone", "status", "organization_id", "has_backyard_permission", "is_reporter_confidential", "is_reporter_owner", "reporter_contact_consent", "location", "address_number", "address_id", "id", "access_comments", "access_gate", "access_fence", "access_locked", "access_dog", "access_other", "address_raw", "address_country", "address_postal_code", "address_locality", "address_street", "address_region", "comments", "created", "h3cell", "has_adult", "has_larvae", "has_pupae", "map_zoom", "owner_email", "owner_name", "owner_phone", "public_id", "reporter_email", "reporter_name", "reporter_phone", "status", "organization_id", "has_backyard_permission", "is_reporter_confidential", "is_reporter_owner", "reporter_contact_consent", "location", "address_number", "address_id", "reviewed", "reviewer_id",
).WithParent("publicreport.water"), ).WithParent("publicreport.water"),
tableAlias: alias, tableAlias: alias,
ID: psql.Quote(alias, "id"), ID: psql.Quote(alias, "id"),
@ -128,6 +131,8 @@ func buildPublicreportWaterColumns(alias string) publicreportWaterColumns {
Location: psql.Quote(alias, "location"), Location: psql.Quote(alias, "location"),
AddressNumber: psql.Quote(alias, "address_number"), AddressNumber: psql.Quote(alias, "address_number"),
AddressID: psql.Quote(alias, "address_id"), AddressID: psql.Quote(alias, "address_id"),
Reviewed: psql.Quote(alias, "reviewed"),
ReviewerID: psql.Quote(alias, "reviewer_id"),
} }
} }
@ -170,6 +175,8 @@ type publicreportWaterColumns struct {
Location psql.Expression Location psql.Expression
AddressNumber psql.Expression AddressNumber psql.Expression
AddressID psql.Expression AddressID psql.Expression
Reviewed psql.Expression
ReviewerID psql.Expression
} }
func (c publicreportWaterColumns) Alias() string { func (c publicreportWaterColumns) Alias() string {
@ -220,10 +227,12 @@ type PublicreportWaterSetter struct {
Location omitnull.Val[string] `db:"location" ` Location omitnull.Val[string] `db:"location" `
AddressNumber omit.Val[string] `db:"address_number" ` AddressNumber omit.Val[string] `db:"address_number" `
AddressID omitnull.Val[int32] `db:"address_id" ` AddressID omitnull.Val[int32] `db:"address_id" `
Reviewed omitnull.Val[time.Time] `db:"reviewed" `
ReviewerID omitnull.Val[int32] `db:"reviewer_id" `
} }
func (s PublicreportWaterSetter) SetColumns() []string { func (s PublicreportWaterSetter) SetColumns() []string {
vals := make([]string, 0, 36) vals := make([]string, 0, 38)
if s.ID.IsValue() { if s.ID.IsValue() {
vals = append(vals, "id") vals = append(vals, "id")
} }
@ -332,6 +341,12 @@ func (s PublicreportWaterSetter) SetColumns() []string {
if !s.AddressID.IsUnset() { if !s.AddressID.IsUnset() {
vals = append(vals, "address_id") vals = append(vals, "address_id")
} }
if !s.Reviewed.IsUnset() {
vals = append(vals, "reviewed")
}
if !s.ReviewerID.IsUnset() {
vals = append(vals, "reviewer_id")
}
return vals return vals
} }
@ -444,6 +459,12 @@ func (s PublicreportWaterSetter) Overwrite(t *PublicreportWater) {
if !s.AddressID.IsUnset() { if !s.AddressID.IsUnset() {
t.AddressID = s.AddressID.MustGetNull() t.AddressID = s.AddressID.MustGetNull()
} }
if !s.Reviewed.IsUnset() {
t.Reviewed = s.Reviewed.MustGetNull()
}
if !s.ReviewerID.IsUnset() {
t.ReviewerID = s.ReviewerID.MustGetNull()
}
} }
func (s *PublicreportWaterSetter) Apply(q *dialect.InsertQuery) { func (s *PublicreportWaterSetter) Apply(q *dialect.InsertQuery) {
@ -452,7 +473,7 @@ func (s *PublicreportWaterSetter) Apply(q *dialect.InsertQuery) {
}) })
q.AppendValues(bob.ExpressionFunc(func(ctx context.Context, w io.StringWriter, d bob.Dialect, start int) ([]any, error) { q.AppendValues(bob.ExpressionFunc(func(ctx context.Context, w io.StringWriter, d bob.Dialect, start int) ([]any, error) {
vals := make([]bob.Expression, 36) vals := make([]bob.Expression, 38)
if s.ID.IsValue() { if s.ID.IsValue() {
vals[0] = psql.Arg(s.ID.MustGet()) vals[0] = psql.Arg(s.ID.MustGet())
} else { } else {
@ -669,6 +690,18 @@ func (s *PublicreportWaterSetter) Apply(q *dialect.InsertQuery) {
vals[35] = psql.Raw("DEFAULT") vals[35] = psql.Raw("DEFAULT")
} }
if !s.Reviewed.IsUnset() {
vals[36] = psql.Arg(s.Reviewed.MustGetNull())
} else {
vals[36] = psql.Raw("DEFAULT")
}
if !s.ReviewerID.IsUnset() {
vals[37] = psql.Arg(s.ReviewerID.MustGetNull())
} else {
vals[37] = psql.Raw("DEFAULT")
}
return bob.ExpressSlice(ctx, w, d, start, vals, "", ", ", "") return bob.ExpressSlice(ctx, w, d, start, vals, "", ", ", "")
})) }))
} }
@ -678,7 +711,7 @@ func (s PublicreportWaterSetter) UpdateMod() bob.Mod[*dialect.UpdateQuery] {
} }
func (s PublicreportWaterSetter) Expressions(prefix ...string) []bob.Expression { func (s PublicreportWaterSetter) Expressions(prefix ...string) []bob.Expression {
exprs := make([]bob.Expression, 0, 36) exprs := make([]bob.Expression, 0, 38)
if s.ID.IsValue() { if s.ID.IsValue() {
exprs = append(exprs, expr.Join{Sep: " = ", Exprs: []bob.Expression{ exprs = append(exprs, expr.Join{Sep: " = ", Exprs: []bob.Expression{
@ -932,6 +965,20 @@ func (s PublicreportWaterSetter) Expressions(prefix ...string) []bob.Expression
}}) }})
} }
if !s.Reviewed.IsUnset() {
exprs = append(exprs, expr.Join{Sep: " = ", Exprs: []bob.Expression{
psql.Quote(append(prefix, "reviewed")...),
psql.Arg(s.Reviewed),
}})
}
if !s.ReviewerID.IsUnset() {
exprs = append(exprs, expr.Join{Sep: " = ", Exprs: []bob.Expression{
psql.Quote(append(prefix, "reviewer_id")...),
psql.Arg(s.ReviewerID),
}})
}
return exprs return exprs
} }
@ -1254,6 +1301,30 @@ func (os PublicreportWaterSlice) Organization(mods ...bob.Mod[*dialect.SelectQue
)...) )...)
} }
// ReviewerUser starts a query for related objects on user_
func (o *PublicreportWater) ReviewerUser(mods ...bob.Mod[*dialect.SelectQuery]) UsersQuery {
return Users.Query(append(mods,
sm.Where(Users.Columns.ID.EQ(psql.Arg(o.ReviewerID))),
)...)
}
func (os PublicreportWaterSlice) ReviewerUser(mods ...bob.Mod[*dialect.SelectQuery]) UsersQuery {
pkReviewerID := make(pgtypes.Array[null.Val[int32]], 0, len(os))
for _, o := range os {
if o == nil {
continue
}
pkReviewerID = append(pkReviewerID, o.ReviewerID)
}
PKArgExpr := psql.Select(sm.Columns(
psql.F("unnest", psql.Cast(psql.Arg(pkReviewerID), "integer[]")),
))
return Users.Query(append(mods,
sm.Where(psql.Group(Users.Columns.ID).OP("IN", PKArgExpr)),
)...)
}
// Images starts a query for related objects on publicreport.image // Images starts a query for related objects on publicreport.image
func (o *PublicreportWater) Images(mods ...bob.Mod[*dialect.SelectQuery]) PublicreportImagesQuery { func (o *PublicreportWater) Images(mods ...bob.Mod[*dialect.SelectQuery]) PublicreportImagesQuery {
return PublicreportImages.Query(append(mods, return PublicreportImages.Query(append(mods,
@ -1515,6 +1586,54 @@ func (publicreportWater0 *PublicreportWater) AttachOrganization(ctx context.Cont
return nil return nil
} }
func attachPublicreportWaterReviewerUser0(ctx context.Context, exec bob.Executor, count int, publicreportWater0 *PublicreportWater, user1 *User) (*PublicreportWater, error) {
setter := &PublicreportWaterSetter{
ReviewerID: omitnull.From(user1.ID),
}
err := publicreportWater0.Update(ctx, exec, setter)
if err != nil {
return nil, fmt.Errorf("attachPublicreportWaterReviewerUser0: %w", err)
}
return publicreportWater0, nil
}
func (publicreportWater0 *PublicreportWater) InsertReviewerUser(ctx context.Context, exec bob.Executor, related *UserSetter) error {
var err error
user1, err := Users.Insert(related).One(ctx, exec)
if err != nil {
return fmt.Errorf("inserting related objects: %w", err)
}
_, err = attachPublicreportWaterReviewerUser0(ctx, exec, 1, publicreportWater0, user1)
if err != nil {
return err
}
publicreportWater0.R.ReviewerUser = user1
user1.R.ReviewerWaters = append(user1.R.ReviewerWaters, publicreportWater0)
return nil
}
func (publicreportWater0 *PublicreportWater) AttachReviewerUser(ctx context.Context, exec bob.Executor, user1 *User) error {
var err error
_, err = attachPublicreportWaterReviewerUser0(ctx, exec, 1, publicreportWater0, user1)
if err != nil {
return err
}
publicreportWater0.R.ReviewerUser = user1
user1.R.ReviewerWaters = append(user1.R.ReviewerWaters, publicreportWater0)
return nil
}
func attachPublicreportWaterImages0(ctx context.Context, exec bob.Executor, count int, publicreportWater0 *PublicreportWater, publicreportImages2 PublicreportImageSlice) (PublicreportWaterImageSlice, error) { func attachPublicreportWaterImages0(ctx context.Context, exec bob.Executor, count int, publicreportWater0 *PublicreportWater, publicreportImages2 PublicreportImageSlice) (PublicreportWaterImageSlice, error) {
setters := make([]*PublicreportWaterImageSetter, count) setters := make([]*PublicreportWaterImageSetter, count)
for i := range count { for i := range count {
@ -1617,6 +1736,8 @@ type publicreportWaterWhere[Q psql.Filterable] struct {
Location psql.WhereNullMod[Q, string] Location psql.WhereNullMod[Q, string]
AddressNumber psql.WhereMod[Q, string] AddressNumber psql.WhereMod[Q, string]
AddressID psql.WhereNullMod[Q, int32] AddressID psql.WhereNullMod[Q, int32]
Reviewed psql.WhereNullMod[Q, time.Time]
ReviewerID psql.WhereNullMod[Q, int32]
} }
func (publicreportWaterWhere[Q]) AliasedAs(alias string) publicreportWaterWhere[Q] { func (publicreportWaterWhere[Q]) AliasedAs(alias string) publicreportWaterWhere[Q] {
@ -1661,6 +1782,8 @@ func buildPublicreportWaterWhere[Q psql.Filterable](cols publicreportWaterColumn
Location: psql.WhereNull[Q, string](cols.Location), Location: psql.WhereNull[Q, string](cols.Location),
AddressNumber: psql.Where[Q, string](cols.AddressNumber), AddressNumber: psql.Where[Q, string](cols.AddressNumber),
AddressID: psql.WhereNull[Q, int32](cols.AddressID), AddressID: psql.WhereNull[Q, int32](cols.AddressID),
Reviewed: psql.WhereNull[Q, time.Time](cols.Reviewed),
ReviewerID: psql.WhereNull[Q, int32](cols.ReviewerID),
} }
} }
@ -1722,6 +1845,18 @@ func (o *PublicreportWater) Preload(name string, retrieved any) error {
rel.R.Waters = PublicreportWaterSlice{o} rel.R.Waters = PublicreportWaterSlice{o}
} }
return nil return nil
case "ReviewerUser":
rel, ok := retrieved.(*User)
if !ok {
return fmt.Errorf("publicreportWater cannot load %T as %q", retrieved, name)
}
o.R.ReviewerUser = rel
if rel != nil {
rel.R.ReviewerWaters = PublicreportWaterSlice{o}
}
return nil
case "Images": case "Images":
rels, ok := retrieved.(PublicreportImageSlice) rels, ok := retrieved.(PublicreportImageSlice)
if !ok { if !ok {
@ -1744,6 +1879,7 @@ func (o *PublicreportWater) Preload(name string, retrieved any) error {
type publicreportWaterPreloader struct { type publicreportWaterPreloader struct {
Address func(...psql.PreloadOption) psql.Preloader Address func(...psql.PreloadOption) psql.Preloader
Organization func(...psql.PreloadOption) psql.Preloader Organization func(...psql.PreloadOption) psql.Preloader
ReviewerUser func(...psql.PreloadOption) psql.Preloader
} }
func buildPublicreportWaterPreloader() publicreportWaterPreloader { func buildPublicreportWaterPreloader() publicreportWaterPreloader {
@ -1774,6 +1910,19 @@ func buildPublicreportWaterPreloader() publicreportWaterPreloader {
}, },
}, Organizations.Columns.Names(), opts...) }, Organizations.Columns.Names(), opts...)
}, },
ReviewerUser: func(opts ...psql.PreloadOption) psql.Preloader {
return psql.Preload[*User, UserSlice](psql.PreloadRel{
Name: "ReviewerUser",
Sides: []psql.PreloadSide{
{
From: PublicreportWaters,
To: Users,
FromColumns: []string{"reviewer_id"},
ToColumns: []string{"id"},
},
},
}, Users.Columns.Names(), opts...)
},
} }
} }
@ -1782,6 +1931,7 @@ type publicreportWaterThenLoader[Q orm.Loadable] struct {
NotifyPhoneWaters func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q] NotifyPhoneWaters func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
Address func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q] Address func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
Organization func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q] Organization func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
ReviewerUser func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
Images func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q] Images func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
} }
@ -1798,6 +1948,9 @@ func buildPublicreportWaterThenLoader[Q orm.Loadable]() publicreportWaterThenLoa
type OrganizationLoadInterface interface { type OrganizationLoadInterface interface {
LoadOrganization(context.Context, bob.Executor, ...bob.Mod[*dialect.SelectQuery]) error LoadOrganization(context.Context, bob.Executor, ...bob.Mod[*dialect.SelectQuery]) error
} }
type ReviewerUserLoadInterface interface {
LoadReviewerUser(context.Context, bob.Executor, ...bob.Mod[*dialect.SelectQuery]) error
}
type ImagesLoadInterface interface { type ImagesLoadInterface interface {
LoadImages(context.Context, bob.Executor, ...bob.Mod[*dialect.SelectQuery]) error LoadImages(context.Context, bob.Executor, ...bob.Mod[*dialect.SelectQuery]) error
} }
@ -1827,6 +1980,12 @@ func buildPublicreportWaterThenLoader[Q orm.Loadable]() publicreportWaterThenLoa
return retrieved.LoadOrganization(ctx, exec, mods...) return retrieved.LoadOrganization(ctx, exec, mods...)
}, },
), ),
ReviewerUser: thenLoadBuilder[Q](
"ReviewerUser",
func(ctx context.Context, exec bob.Executor, retrieved ReviewerUserLoadInterface, mods ...bob.Mod[*dialect.SelectQuery]) error {
return retrieved.LoadReviewerUser(ctx, exec, mods...)
},
),
Images: thenLoadBuilder[Q]( Images: thenLoadBuilder[Q](
"Images", "Images",
func(ctx context.Context, exec bob.Executor, retrieved ImagesLoadInterface, mods ...bob.Mod[*dialect.SelectQuery]) error { func(ctx context.Context, exec bob.Executor, retrieved ImagesLoadInterface, mods ...bob.Mod[*dialect.SelectQuery]) error {
@ -2068,6 +2227,61 @@ func (os PublicreportWaterSlice) LoadOrganization(ctx context.Context, exec bob.
return nil return nil
} }
// LoadReviewerUser loads the publicreportWater's ReviewerUser into the .R struct
func (o *PublicreportWater) LoadReviewerUser(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
if o == nil {
return nil
}
// Reset the relationship
o.R.ReviewerUser = nil
related, err := o.ReviewerUser(mods...).One(ctx, exec)
if err != nil {
return err
}
related.R.ReviewerWaters = PublicreportWaterSlice{o}
o.R.ReviewerUser = related
return nil
}
// LoadReviewerUser loads the publicreportWater's ReviewerUser into the .R struct
func (os PublicreportWaterSlice) LoadReviewerUser(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
if len(os) == 0 {
return nil
}
users, err := os.ReviewerUser(mods...).All(ctx, exec)
if err != nil {
return err
}
for _, o := range os {
if o == nil {
continue
}
for _, rel := range users {
if !o.ReviewerID.IsValue() {
continue
}
if !(o.ReviewerID.IsValue() && o.ReviewerID.MustGet() == rel.ID) {
continue
}
rel.R.ReviewerWaters = append(rel.R.ReviewerWaters, o)
o.R.ReviewerUser = rel
break
}
}
return nil
}
// LoadImages loads the publicreportWater's Images into the .R struct // LoadImages loads the publicreportWater's Images into the .R struct
func (o *PublicreportWater) LoadImages(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error { func (o *PublicreportWater) LoadImages(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
if o == nil { if o == nil {

View file

@ -32,7 +32,6 @@ type Resident struct {
Name string `db:"name" ` Name string `db:"name" `
PhoneMobile null.Val[string] `db:"phone_mobile" ` PhoneMobile null.Val[string] `db:"phone_mobile" `
SiteID int32 `db:"site_id" ` SiteID int32 `db:"site_id" `
SiteVersion int32 `db:"site_version" `
R residentR `db:"-" ` R residentR `db:"-" `
} }
@ -52,13 +51,13 @@ type residentR struct {
Address *Address // resident.resident_address_id_fkey Address *Address // resident.resident_address_id_fkey
CreatorUser *User // resident.resident_creator_fkey CreatorUser *User // resident.resident_creator_fkey
PhoneMobilePhone *CommsPhone // resident.resident_phone_mobile_fkey PhoneMobilePhone *CommsPhone // resident.resident_phone_mobile_fkey
Site *Site // resident.resident_site_id_site_version_fkey Site *Site // resident.resident_site_id_fkey
} }
func buildResidentColumns(alias string) residentColumns { func buildResidentColumns(alias string) residentColumns {
return residentColumns{ return residentColumns{
ColumnsExpr: expr.NewColumnsExpr( ColumnsExpr: expr.NewColumnsExpr(
"address_id", "created", "creator", "id", "name", "phone_mobile", "site_id", "site_version", "address_id", "created", "creator", "id", "name", "phone_mobile", "site_id",
).WithParent("resident"), ).WithParent("resident"),
tableAlias: alias, tableAlias: alias,
AddressID: psql.Quote(alias, "address_id"), AddressID: psql.Quote(alias, "address_id"),
@ -68,7 +67,6 @@ func buildResidentColumns(alias string) residentColumns {
Name: psql.Quote(alias, "name"), Name: psql.Quote(alias, "name"),
PhoneMobile: psql.Quote(alias, "phone_mobile"), PhoneMobile: psql.Quote(alias, "phone_mobile"),
SiteID: psql.Quote(alias, "site_id"), SiteID: psql.Quote(alias, "site_id"),
SiteVersion: psql.Quote(alias, "site_version"),
} }
} }
@ -82,7 +80,6 @@ type residentColumns struct {
Name psql.Expression Name psql.Expression
PhoneMobile psql.Expression PhoneMobile psql.Expression
SiteID psql.Expression SiteID psql.Expression
SiteVersion psql.Expression
} }
func (c residentColumns) Alias() string { func (c residentColumns) Alias() string {
@ -104,11 +101,10 @@ type ResidentSetter struct {
Name omit.Val[string] `db:"name" ` Name omit.Val[string] `db:"name" `
PhoneMobile omitnull.Val[string] `db:"phone_mobile" ` PhoneMobile omitnull.Val[string] `db:"phone_mobile" `
SiteID omit.Val[int32] `db:"site_id" ` SiteID omit.Val[int32] `db:"site_id" `
SiteVersion omit.Val[int32] `db:"site_version" `
} }
func (s ResidentSetter) SetColumns() []string { func (s ResidentSetter) SetColumns() []string {
vals := make([]string, 0, 8) vals := make([]string, 0, 7)
if s.AddressID.IsValue() { if s.AddressID.IsValue() {
vals = append(vals, "address_id") vals = append(vals, "address_id")
} }
@ -130,9 +126,6 @@ func (s ResidentSetter) SetColumns() []string {
if s.SiteID.IsValue() { if s.SiteID.IsValue() {
vals = append(vals, "site_id") vals = append(vals, "site_id")
} }
if s.SiteVersion.IsValue() {
vals = append(vals, "site_version")
}
return vals return vals
} }
@ -158,9 +151,6 @@ func (s ResidentSetter) Overwrite(t *Resident) {
if s.SiteID.IsValue() { if s.SiteID.IsValue() {
t.SiteID = s.SiteID.MustGet() t.SiteID = s.SiteID.MustGet()
} }
if s.SiteVersion.IsValue() {
t.SiteVersion = s.SiteVersion.MustGet()
}
} }
func (s *ResidentSetter) Apply(q *dialect.InsertQuery) { func (s *ResidentSetter) Apply(q *dialect.InsertQuery) {
@ -169,7 +159,7 @@ func (s *ResidentSetter) Apply(q *dialect.InsertQuery) {
}) })
q.AppendValues(bob.ExpressionFunc(func(ctx context.Context, w io.StringWriter, d bob.Dialect, start int) ([]any, error) { q.AppendValues(bob.ExpressionFunc(func(ctx context.Context, w io.StringWriter, d bob.Dialect, start int) ([]any, error) {
vals := make([]bob.Expression, 8) vals := make([]bob.Expression, 7)
if s.AddressID.IsValue() { if s.AddressID.IsValue() {
vals[0] = psql.Arg(s.AddressID.MustGet()) vals[0] = psql.Arg(s.AddressID.MustGet())
} else { } else {
@ -212,12 +202,6 @@ func (s *ResidentSetter) Apply(q *dialect.InsertQuery) {
vals[6] = psql.Raw("DEFAULT") vals[6] = psql.Raw("DEFAULT")
} }
if s.SiteVersion.IsValue() {
vals[7] = psql.Arg(s.SiteVersion.MustGet())
} else {
vals[7] = psql.Raw("DEFAULT")
}
return bob.ExpressSlice(ctx, w, d, start, vals, "", ", ", "") return bob.ExpressSlice(ctx, w, d, start, vals, "", ", ", "")
})) }))
} }
@ -227,7 +211,7 @@ func (s ResidentSetter) UpdateMod() bob.Mod[*dialect.UpdateQuery] {
} }
func (s ResidentSetter) Expressions(prefix ...string) []bob.Expression { func (s ResidentSetter) Expressions(prefix ...string) []bob.Expression {
exprs := make([]bob.Expression, 0, 8) exprs := make([]bob.Expression, 0, 7)
if s.AddressID.IsValue() { if s.AddressID.IsValue() {
exprs = append(exprs, expr.Join{Sep: " = ", Exprs: []bob.Expression{ exprs = append(exprs, expr.Join{Sep: " = ", Exprs: []bob.Expression{
@ -278,13 +262,6 @@ func (s ResidentSetter) Expressions(prefix ...string) []bob.Expression {
}}) }})
} }
if s.SiteVersion.IsValue() {
exprs = append(exprs, expr.Join{Sep: " = ", Exprs: []bob.Expression{
psql.Quote(append(prefix, "site_version")...),
psql.Arg(s.SiteVersion),
}})
}
return exprs return exprs
} }
@ -586,28 +563,24 @@ func (os ResidentSlice) PhoneMobilePhone(mods ...bob.Mod[*dialect.SelectQuery])
// Site starts a query for related objects on site // Site starts a query for related objects on site
func (o *Resident) Site(mods ...bob.Mod[*dialect.SelectQuery]) SitesQuery { func (o *Resident) Site(mods ...bob.Mod[*dialect.SelectQuery]) SitesQuery {
return Sites.Query(append(mods, return Sites.Query(append(mods,
sm.Where(Sites.Columns.ID.EQ(psql.Arg(o.SiteID))), sm.Where(Sites.Columns.Version.EQ(psql.Arg(o.SiteVersion))), sm.Where(Sites.Columns.ID.EQ(psql.Arg(o.SiteID))),
)...) )...)
} }
func (os ResidentSlice) Site(mods ...bob.Mod[*dialect.SelectQuery]) SitesQuery { func (os ResidentSlice) Site(mods ...bob.Mod[*dialect.SelectQuery]) SitesQuery {
pkSiteID := make(pgtypes.Array[int32], 0, len(os)) pkSiteID := make(pgtypes.Array[int32], 0, len(os))
pkSiteVersion := make(pgtypes.Array[int32], 0, len(os))
for _, o := range os { for _, o := range os {
if o == nil { if o == nil {
continue continue
} }
pkSiteID = append(pkSiteID, o.SiteID) pkSiteID = append(pkSiteID, o.SiteID)
pkSiteVersion = append(pkSiteVersion, o.SiteVersion)
} }
PKArgExpr := psql.Select(sm.Columns( PKArgExpr := psql.Select(sm.Columns(
psql.F("unnest", psql.Cast(psql.Arg(pkSiteID), "integer[]")), psql.F("unnest", psql.Cast(psql.Arg(pkSiteID), "integer[]")),
psql.F("unnest", psql.Cast(psql.Arg(pkSiteVersion), "integer[]")),
)) ))
return Sites.Query(append(mods, return Sites.Query(append(mods,
sm.Where(psql.Group(Sites.Columns.ID, Sites.Columns.Version).OP("IN", PKArgExpr)), sm.Where(psql.Group(Sites.Columns.ID).OP("IN", PKArgExpr)),
)...) )...)
} }
@ -757,8 +730,7 @@ func (resident0 *Resident) AttachPhoneMobilePhone(ctx context.Context, exec bob.
func attachResidentSite0(ctx context.Context, exec bob.Executor, count int, resident0 *Resident, site1 *Site) (*Resident, error) { func attachResidentSite0(ctx context.Context, exec bob.Executor, count int, resident0 *Resident, site1 *Site) (*Resident, error) {
setter := &ResidentSetter{ setter := &ResidentSetter{
SiteID: omit.From(site1.ID), SiteID: omit.From(site1.ID),
SiteVersion: omit.From(site1.Version),
} }
err := resident0.Update(ctx, exec, setter) err := resident0.Update(ctx, exec, setter)
@ -812,7 +784,6 @@ type residentWhere[Q psql.Filterable] struct {
Name psql.WhereMod[Q, string] Name psql.WhereMod[Q, string]
PhoneMobile psql.WhereNullMod[Q, string] PhoneMobile psql.WhereNullMod[Q, string]
SiteID psql.WhereMod[Q, int32] SiteID psql.WhereMod[Q, int32]
SiteVersion psql.WhereMod[Q, int32]
} }
func (residentWhere[Q]) AliasedAs(alias string) residentWhere[Q] { func (residentWhere[Q]) AliasedAs(alias string) residentWhere[Q] {
@ -828,7 +799,6 @@ func buildResidentWhere[Q psql.Filterable](cols residentColumns) residentWhere[Q
Name: psql.Where[Q, string](cols.Name), Name: psql.Where[Q, string](cols.Name),
PhoneMobile: psql.WhereNull[Q, string](cols.PhoneMobile), PhoneMobile: psql.WhereNull[Q, string](cols.PhoneMobile),
SiteID: psql.Where[Q, int32](cols.SiteID), SiteID: psql.Where[Q, int32](cols.SiteID),
SiteVersion: psql.Where[Q, int32](cols.SiteVersion),
} }
} }
@ -946,8 +916,8 @@ func buildResidentPreloader() residentPreloader {
{ {
From: Residents, From: Residents,
To: Sites, To: Sites,
FromColumns: []string{"site_id", "site_version"}, FromColumns: []string{"site_id"},
ToColumns: []string{"id", "version"}, ToColumns: []string{"id"},
}, },
}, },
}, Sites.Columns.Names(), opts...) }, Sites.Columns.Names(), opts...)
@ -1205,10 +1175,6 @@ func (os ResidentSlice) LoadSite(ctx context.Context, exec bob.Executor, mods ..
continue continue
} }
if !(o.SiteVersion == rel.Version) {
continue
}
rel.R.Residents = append(rel.R.Residents, o) rel.R.Residents = append(rel.R.Residents, o)
o.R.Site = rel o.R.Site = rel

View file

@ -37,7 +37,7 @@ type Site struct {
ParcelID null.Val[int32] `db:"parcel_id" ` ParcelID null.Val[int32] `db:"parcel_id" `
ResidentOwned null.Val[bool] `db:"resident_owned" ` ResidentOwned null.Val[bool] `db:"resident_owned" `
Tags pgtypes.HStore `db:"tags" ` Tags pgtypes.HStore `db:"tags" `
Version int32 `db:"version,pk" ` Version int32 `db:"version" `
R siteR `db:"-" ` R siteR `db:"-" `
} }
@ -54,9 +54,9 @@ type SitesQuery = *psql.ViewQuery[*Site, SiteSlice]
// siteR is where relationships are stored. // siteR is where relationships are stored.
type siteR struct { type siteR struct {
Features FeatureSlice // feature.feature_site_id_site_version_fkey Features FeatureSlice // feature.feature_site_id_fkey
Leads LeadSlice // lead.lead_site_id_site_version_fkey Leads LeadSlice // lead.lead_site_id_fkey
Residents ResidentSlice // resident.resident_site_id_site_version_fkey Residents ResidentSlice // resident.resident_site_id_fkey
Address *Address // site.site_address_id_fkey Address *Address // site.site_address_id_fkey
CreatorUser *User // site.site_creator_id_fkey CreatorUser *User // site.site_creator_id_fkey
File *FileuploadFile // site.site_file_id_fkey File *FileuploadFile // site.site_file_id_fkey
@ -127,7 +127,7 @@ type SiteSetter struct {
ParcelID omitnull.Val[int32] `db:"parcel_id" ` ParcelID omitnull.Val[int32] `db:"parcel_id" `
ResidentOwned omitnull.Val[bool] `db:"resident_owned" ` ResidentOwned omitnull.Val[bool] `db:"resident_owned" `
Tags omit.Val[pgtypes.HStore] `db:"tags" ` Tags omit.Val[pgtypes.HStore] `db:"tags" `
Version omit.Val[int32] `db:"version,pk" ` Version omit.Val[int32] `db:"version" `
} }
func (s SiteSetter) SetColumns() []string { func (s SiteSetter) SetColumns() []string {
@ -408,26 +408,23 @@ func (s SiteSetter) Expressions(prefix ...string) []bob.Expression {
// FindSite retrieves a single record by primary key // FindSite retrieves a single record by primary key
// If cols is empty Find will return all columns. // If cols is empty Find will return all columns.
func FindSite(ctx context.Context, exec bob.Executor, IDPK int32, VersionPK int32, cols ...string) (*Site, error) { func FindSite(ctx context.Context, exec bob.Executor, IDPK int32, cols ...string) (*Site, error) {
if len(cols) == 0 { if len(cols) == 0 {
return Sites.Query( return Sites.Query(
sm.Where(Sites.Columns.ID.EQ(psql.Arg(IDPK))), sm.Where(Sites.Columns.ID.EQ(psql.Arg(IDPK))),
sm.Where(Sites.Columns.Version.EQ(psql.Arg(VersionPK))),
).One(ctx, exec) ).One(ctx, exec)
} }
return Sites.Query( return Sites.Query(
sm.Where(Sites.Columns.ID.EQ(psql.Arg(IDPK))), sm.Where(Sites.Columns.ID.EQ(psql.Arg(IDPK))),
sm.Where(Sites.Columns.Version.EQ(psql.Arg(VersionPK))),
sm.Columns(Sites.Columns.Only(cols...)), sm.Columns(Sites.Columns.Only(cols...)),
).One(ctx, exec) ).One(ctx, exec)
} }
// SiteExists checks the presence of a single record by primary key // SiteExists checks the presence of a single record by primary key
func SiteExists(ctx context.Context, exec bob.Executor, IDPK int32, VersionPK int32) (bool, error) { func SiteExists(ctx context.Context, exec bob.Executor, IDPK int32) (bool, error) {
return Sites.Query( return Sites.Query(
sm.Where(Sites.Columns.ID.EQ(psql.Arg(IDPK))), sm.Where(Sites.Columns.ID.EQ(psql.Arg(IDPK))),
sm.Where(Sites.Columns.Version.EQ(psql.Arg(VersionPK))),
).Exists(ctx, exec) ).Exists(ctx, exec)
} }
@ -451,14 +448,11 @@ func (o *Site) AfterQueryHook(ctx context.Context, exec bob.Executor, queryType
// primaryKeyVals returns the primary key values of the Site // primaryKeyVals returns the primary key values of the Site
func (o *Site) primaryKeyVals() bob.Expression { func (o *Site) primaryKeyVals() bob.Expression {
return psql.ArgGroup( return psql.Arg(o.ID)
o.ID,
o.Version,
)
} }
func (o *Site) pkEQ() dialect.Expression { func (o *Site) pkEQ() dialect.Expression {
return psql.Group(psql.Quote("site", "id"), psql.Quote("site", "version")).EQ(bob.ExpressionFunc(func(ctx context.Context, w io.StringWriter, d bob.Dialect, start int) ([]any, error) { return psql.Quote("site", "id").EQ(bob.ExpressionFunc(func(ctx context.Context, w io.StringWriter, d bob.Dialect, start int) ([]any, error) {
return o.primaryKeyVals().WriteSQL(ctx, w, d, start) return o.primaryKeyVals().WriteSQL(ctx, w, d, start)
})) }))
} }
@ -486,7 +480,6 @@ func (o *Site) Delete(ctx context.Context, exec bob.Executor) error {
func (o *Site) Reload(ctx context.Context, exec bob.Executor) error { func (o *Site) Reload(ctx context.Context, exec bob.Executor) error {
o2, err := Sites.Query( o2, err := Sites.Query(
sm.Where(Sites.Columns.ID.EQ(psql.Arg(o.ID))), sm.Where(Sites.Columns.ID.EQ(psql.Arg(o.ID))),
sm.Where(Sites.Columns.Version.EQ(psql.Arg(o.Version))),
).One(ctx, exec) ).One(ctx, exec)
if err != nil { if err != nil {
return err return err
@ -520,7 +513,7 @@ func (o SiteSlice) pkIN() dialect.Expression {
return psql.Raw("NULL") return psql.Raw("NULL")
} }
return psql.Group(psql.Quote("site", "id"), psql.Quote("site", "version")).In(bob.ExpressionFunc(func(ctx context.Context, w io.StringWriter, d bob.Dialect, start int) ([]any, error) { return psql.Quote("site", "id").In(bob.ExpressionFunc(func(ctx context.Context, w io.StringWriter, d bob.Dialect, start int) ([]any, error) {
pkPairs := make([]bob.Expression, len(o)) pkPairs := make([]bob.Expression, len(o))
for i, row := range o { for i, row := range o {
pkPairs[i] = row.primaryKeyVals() pkPairs[i] = row.primaryKeyVals()
@ -538,9 +531,6 @@ func (o SiteSlice) copyMatchingRows(from ...*Site) {
if new.ID != old.ID { if new.ID != old.ID {
continue continue
} }
if new.Version != old.Version {
continue
}
new.R = old.R new.R = old.R
o[i] = new o[i] = new
break break
@ -642,84 +632,72 @@ func (o SiteSlice) ReloadAll(ctx context.Context, exec bob.Executor) error {
// Features starts a query for related objects on feature // Features starts a query for related objects on feature
func (o *Site) Features(mods ...bob.Mod[*dialect.SelectQuery]) FeaturesQuery { func (o *Site) Features(mods ...bob.Mod[*dialect.SelectQuery]) FeaturesQuery {
return Features.Query(append(mods, return Features.Query(append(mods,
sm.Where(Features.Columns.SiteID.EQ(psql.Arg(o.ID))), sm.Where(Features.Columns.SiteVersion.EQ(psql.Arg(o.Version))), sm.Where(Features.Columns.SiteID.EQ(psql.Arg(o.ID))),
)...) )...)
} }
func (os SiteSlice) Features(mods ...bob.Mod[*dialect.SelectQuery]) FeaturesQuery { func (os SiteSlice) Features(mods ...bob.Mod[*dialect.SelectQuery]) FeaturesQuery {
pkID := make(pgtypes.Array[int32], 0, len(os)) pkID := make(pgtypes.Array[int32], 0, len(os))
pkVersion := make(pgtypes.Array[int32], 0, len(os))
for _, o := range os { for _, o := range os {
if o == nil { if o == nil {
continue continue
} }
pkID = append(pkID, o.ID) pkID = append(pkID, o.ID)
pkVersion = append(pkVersion, o.Version)
} }
PKArgExpr := psql.Select(sm.Columns( PKArgExpr := psql.Select(sm.Columns(
psql.F("unnest", psql.Cast(psql.Arg(pkID), "integer[]")), psql.F("unnest", psql.Cast(psql.Arg(pkID), "integer[]")),
psql.F("unnest", psql.Cast(psql.Arg(pkVersion), "integer[]")),
)) ))
return Features.Query(append(mods, return Features.Query(append(mods,
sm.Where(psql.Group(Features.Columns.SiteID, Features.Columns.SiteVersion).OP("IN", PKArgExpr)), sm.Where(psql.Group(Features.Columns.SiteID).OP("IN", PKArgExpr)),
)...) )...)
} }
// Leads starts a query for related objects on lead // Leads starts a query for related objects on lead
func (o *Site) Leads(mods ...bob.Mod[*dialect.SelectQuery]) LeadsQuery { func (o *Site) Leads(mods ...bob.Mod[*dialect.SelectQuery]) LeadsQuery {
return Leads.Query(append(mods, return Leads.Query(append(mods,
sm.Where(Leads.Columns.SiteID.EQ(psql.Arg(o.ID))), sm.Where(Leads.Columns.SiteVersion.EQ(psql.Arg(o.Version))), sm.Where(Leads.Columns.SiteID.EQ(psql.Arg(o.ID))),
)...) )...)
} }
func (os SiteSlice) Leads(mods ...bob.Mod[*dialect.SelectQuery]) LeadsQuery { func (os SiteSlice) Leads(mods ...bob.Mod[*dialect.SelectQuery]) LeadsQuery {
pkID := make(pgtypes.Array[int32], 0, len(os)) pkID := make(pgtypes.Array[int32], 0, len(os))
pkVersion := make(pgtypes.Array[int32], 0, len(os))
for _, o := range os { for _, o := range os {
if o == nil { if o == nil {
continue continue
} }
pkID = append(pkID, o.ID) pkID = append(pkID, o.ID)
pkVersion = append(pkVersion, o.Version)
} }
PKArgExpr := psql.Select(sm.Columns( PKArgExpr := psql.Select(sm.Columns(
psql.F("unnest", psql.Cast(psql.Arg(pkID), "integer[]")), psql.F("unnest", psql.Cast(psql.Arg(pkID), "integer[]")),
psql.F("unnest", psql.Cast(psql.Arg(pkVersion), "integer[]")),
)) ))
return Leads.Query(append(mods, return Leads.Query(append(mods,
sm.Where(psql.Group(Leads.Columns.SiteID, Leads.Columns.SiteVersion).OP("IN", PKArgExpr)), sm.Where(psql.Group(Leads.Columns.SiteID).OP("IN", PKArgExpr)),
)...) )...)
} }
// Residents starts a query for related objects on resident // Residents starts a query for related objects on resident
func (o *Site) Residents(mods ...bob.Mod[*dialect.SelectQuery]) ResidentsQuery { func (o *Site) Residents(mods ...bob.Mod[*dialect.SelectQuery]) ResidentsQuery {
return Residents.Query(append(mods, return Residents.Query(append(mods,
sm.Where(Residents.Columns.SiteID.EQ(psql.Arg(o.ID))), sm.Where(Residents.Columns.SiteVersion.EQ(psql.Arg(o.Version))), sm.Where(Residents.Columns.SiteID.EQ(psql.Arg(o.ID))),
)...) )...)
} }
func (os SiteSlice) Residents(mods ...bob.Mod[*dialect.SelectQuery]) ResidentsQuery { func (os SiteSlice) Residents(mods ...bob.Mod[*dialect.SelectQuery]) ResidentsQuery {
pkID := make(pgtypes.Array[int32], 0, len(os)) pkID := make(pgtypes.Array[int32], 0, len(os))
pkVersion := make(pgtypes.Array[int32], 0, len(os))
for _, o := range os { for _, o := range os {
if o == nil { if o == nil {
continue continue
} }
pkID = append(pkID, o.ID) pkID = append(pkID, o.ID)
pkVersion = append(pkVersion, o.Version)
} }
PKArgExpr := psql.Select(sm.Columns( PKArgExpr := psql.Select(sm.Columns(
psql.F("unnest", psql.Cast(psql.Arg(pkID), "integer[]")), psql.F("unnest", psql.Cast(psql.Arg(pkID), "integer[]")),
psql.F("unnest", psql.Cast(psql.Arg(pkVersion), "integer[]")),
)) ))
return Residents.Query(append(mods, return Residents.Query(append(mods,
sm.Where(psql.Group(Residents.Columns.SiteID, Residents.Columns.SiteVersion).OP("IN", PKArgExpr)), sm.Where(psql.Group(Residents.Columns.SiteID).OP("IN", PKArgExpr)),
)...) )...)
} }
@ -822,7 +800,6 @@ func (os SiteSlice) Parcel(mods ...bob.Mod[*dialect.SelectQuery]) ParcelsQuery {
func insertSiteFeatures0(ctx context.Context, exec bob.Executor, features1 []*FeatureSetter, site0 *Site) (FeatureSlice, error) { func insertSiteFeatures0(ctx context.Context, exec bob.Executor, features1 []*FeatureSetter, site0 *Site) (FeatureSlice, error) {
for i := range features1 { for i := range features1 {
features1[i].SiteID = omit.From(site0.ID) features1[i].SiteID = omit.From(site0.ID)
features1[i].SiteVersion = omit.From(site0.Version)
} }
ret, err := Features.Insert(bob.ToMods(features1...)).All(ctx, exec) ret, err := Features.Insert(bob.ToMods(features1...)).All(ctx, exec)
@ -835,8 +812,7 @@ func insertSiteFeatures0(ctx context.Context, exec bob.Executor, features1 []*Fe
func attachSiteFeatures0(ctx context.Context, exec bob.Executor, count int, features1 FeatureSlice, site0 *Site) (FeatureSlice, error) { func attachSiteFeatures0(ctx context.Context, exec bob.Executor, count int, features1 FeatureSlice, site0 *Site) (FeatureSlice, error) {
setter := &FeatureSetter{ setter := &FeatureSetter{
SiteID: omit.From(site0.ID), SiteID: omit.From(site0.ID),
SiteVersion: omit.From(site0.Version),
} }
err := features1.UpdateAll(ctx, exec, *setter) err := features1.UpdateAll(ctx, exec, *setter)
@ -892,7 +868,6 @@ func (site0 *Site) AttachFeatures(ctx context.Context, exec bob.Executor, relate
func insertSiteLeads0(ctx context.Context, exec bob.Executor, leads1 []*LeadSetter, site0 *Site) (LeadSlice, error) { func insertSiteLeads0(ctx context.Context, exec bob.Executor, leads1 []*LeadSetter, site0 *Site) (LeadSlice, error) {
for i := range leads1 { for i := range leads1 {
leads1[i].SiteID = omitnull.From(site0.ID) leads1[i].SiteID = omitnull.From(site0.ID)
leads1[i].SiteVersion = omitnull.From(site0.Version)
} }
ret, err := Leads.Insert(bob.ToMods(leads1...)).All(ctx, exec) ret, err := Leads.Insert(bob.ToMods(leads1...)).All(ctx, exec)
@ -905,8 +880,7 @@ func insertSiteLeads0(ctx context.Context, exec bob.Executor, leads1 []*LeadSett
func attachSiteLeads0(ctx context.Context, exec bob.Executor, count int, leads1 LeadSlice, site0 *Site) (LeadSlice, error) { func attachSiteLeads0(ctx context.Context, exec bob.Executor, count int, leads1 LeadSlice, site0 *Site) (LeadSlice, error) {
setter := &LeadSetter{ setter := &LeadSetter{
SiteID: omitnull.From(site0.ID), SiteID: omitnull.From(site0.ID),
SiteVersion: omitnull.From(site0.Version),
} }
err := leads1.UpdateAll(ctx, exec, *setter) err := leads1.UpdateAll(ctx, exec, *setter)
@ -962,7 +936,6 @@ func (site0 *Site) AttachLeads(ctx context.Context, exec bob.Executor, related .
func insertSiteResidents0(ctx context.Context, exec bob.Executor, residents1 []*ResidentSetter, site0 *Site) (ResidentSlice, error) { func insertSiteResidents0(ctx context.Context, exec bob.Executor, residents1 []*ResidentSetter, site0 *Site) (ResidentSlice, error) {
for i := range residents1 { for i := range residents1 {
residents1[i].SiteID = omit.From(site0.ID) residents1[i].SiteID = omit.From(site0.ID)
residents1[i].SiteVersion = omit.From(site0.Version)
} }
ret, err := Residents.Insert(bob.ToMods(residents1...)).All(ctx, exec) ret, err := Residents.Insert(bob.ToMods(residents1...)).All(ctx, exec)
@ -975,8 +948,7 @@ func insertSiteResidents0(ctx context.Context, exec bob.Executor, residents1 []*
func attachSiteResidents0(ctx context.Context, exec bob.Executor, count int, residents1 ResidentSlice, site0 *Site) (ResidentSlice, error) { func attachSiteResidents0(ctx context.Context, exec bob.Executor, count int, residents1 ResidentSlice, site0 *Site) (ResidentSlice, error) {
setter := &ResidentSetter{ setter := &ResidentSetter{
SiteID: omit.From(site0.ID), SiteID: omit.From(site0.ID),
SiteVersion: omit.From(site0.Version),
} }
err := residents1.UpdateAll(ctx, exec, *setter) err := residents1.UpdateAll(ctx, exec, *setter)
@ -1555,10 +1527,6 @@ func (os SiteSlice) LoadFeatures(ctx context.Context, exec bob.Executor, mods ..
continue continue
} }
if !(o.Version == rel.SiteVersion) {
continue
}
rel.R.Site = o rel.R.Site = o
o.R.Features = append(o.R.Features, rel) o.R.Features = append(o.R.Features, rel)
@ -1623,13 +1591,6 @@ func (os SiteSlice) LoadLeads(ctx context.Context, exec bob.Executor, mods ...bo
continue continue
} }
if !rel.SiteVersion.IsValue() {
continue
}
if !(rel.SiteVersion.IsValue() && o.Version == rel.SiteVersion.MustGet()) {
continue
}
rel.R.Site = o rel.R.Site = o
o.R.Leads = append(o.R.Leads, rel) o.R.Leads = append(o.R.Leads, rel)
@ -1691,10 +1652,6 @@ func (os SiteSlice) LoadResidents(ctx context.Context, exec bob.Executor, mods .
continue continue
} }
if !(o.Version == rel.SiteVersion) {
continue
}
rel.R.Site = o rel.R.Site = o
o.R.Residents = append(o.R.Residents, rel) o.R.Residents = append(o.R.Residents, rel)

View file

@ -68,6 +68,8 @@ type userR struct {
CreatorNoteImages NoteImageSlice // note_image.note_image_creator_id_fkey CreatorNoteImages NoteImageSlice // note_image.note_image_creator_id_fkey
DeletorNoteImages NoteImageSlice // note_image.note_image_deletor_id_fkey DeletorNoteImages NoteImageSlice // note_image.note_image_deletor_id_fkey
UserNotifications NotificationSlice // notification.notification_user_id_fkey UserNotifications NotificationSlice // notification.notification_user_id_fkey
ReviewerNuisances PublicreportNuisanceSlice // publicreport.nuisance.nuisance_reviewer_id_fkey
ReviewerWaters PublicreportWaterSlice // publicreport.water.water_reviewer_id_fkey
CreatorResidents ResidentSlice // resident.resident_creator_fkey CreatorResidents ResidentSlice // resident.resident_creator_fkey
CreatorReviewTasks ReviewTaskSlice // review_task.review_task_creator_id_fkey CreatorReviewTasks ReviewTaskSlice // review_task.review_task_creator_id_fkey
ReviewerReviewTasks ReviewTaskSlice // review_task.review_task_reviewer_id_fkey ReviewerReviewTasks ReviewTaskSlice // review_task.review_task_reviewer_id_fkey
@ -955,6 +957,54 @@ func (os UserSlice) UserNotifications(mods ...bob.Mod[*dialect.SelectQuery]) Not
)...) )...)
} }
// ReviewerNuisances starts a query for related objects on publicreport.nuisance
func (o *User) ReviewerNuisances(mods ...bob.Mod[*dialect.SelectQuery]) PublicreportNuisancesQuery {
return PublicreportNuisances.Query(append(mods,
sm.Where(PublicreportNuisances.Columns.ReviewerID.EQ(psql.Arg(o.ID))),
)...)
}
func (os UserSlice) ReviewerNuisances(mods ...bob.Mod[*dialect.SelectQuery]) PublicreportNuisancesQuery {
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 PublicreportNuisances.Query(append(mods,
sm.Where(psql.Group(PublicreportNuisances.Columns.ReviewerID).OP("IN", PKArgExpr)),
)...)
}
// ReviewerWaters starts a query for related objects on publicreport.water
func (o *User) ReviewerWaters(mods ...bob.Mod[*dialect.SelectQuery]) PublicreportWatersQuery {
return PublicreportWaters.Query(append(mods,
sm.Where(PublicreportWaters.Columns.ReviewerID.EQ(psql.Arg(o.ID))),
)...)
}
func (os UserSlice) ReviewerWaters(mods ...bob.Mod[*dialect.SelectQuery]) PublicreportWatersQuery {
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 PublicreportWaters.Query(append(mods,
sm.Where(psql.Group(PublicreportWaters.Columns.ReviewerID).OP("IN", PKArgExpr)),
)...)
}
// CreatorResidents starts a query for related objects on resident // CreatorResidents starts a query for related objects on resident
func (o *User) CreatorResidents(mods ...bob.Mod[*dialect.SelectQuery]) ResidentsQuery { func (o *User) CreatorResidents(mods ...bob.Mod[*dialect.SelectQuery]) ResidentsQuery {
return Residents.Query(append(mods, return Residents.Query(append(mods,
@ -2007,6 +2057,142 @@ func (user0 *User) AttachUserNotifications(ctx context.Context, exec bob.Executo
return nil return nil
} }
func insertUserReviewerNuisances0(ctx context.Context, exec bob.Executor, publicreportNuisances1 []*PublicreportNuisanceSetter, user0 *User) (PublicreportNuisanceSlice, error) {
for i := range publicreportNuisances1 {
publicreportNuisances1[i].ReviewerID = omitnull.From(user0.ID)
}
ret, err := PublicreportNuisances.Insert(bob.ToMods(publicreportNuisances1...)).All(ctx, exec)
if err != nil {
return ret, fmt.Errorf("insertUserReviewerNuisances0: %w", err)
}
return ret, nil
}
func attachUserReviewerNuisances0(ctx context.Context, exec bob.Executor, count int, publicreportNuisances1 PublicreportNuisanceSlice, user0 *User) (PublicreportNuisanceSlice, error) {
setter := &PublicreportNuisanceSetter{
ReviewerID: omitnull.From(user0.ID),
}
err := publicreportNuisances1.UpdateAll(ctx, exec, *setter)
if err != nil {
return nil, fmt.Errorf("attachUserReviewerNuisances0: %w", err)
}
return publicreportNuisances1, nil
}
func (user0 *User) InsertReviewerNuisances(ctx context.Context, exec bob.Executor, related ...*PublicreportNuisanceSetter) error {
if len(related) == 0 {
return nil
}
var err error
publicreportNuisances1, err := insertUserReviewerNuisances0(ctx, exec, related, user0)
if err != nil {
return err
}
user0.R.ReviewerNuisances = append(user0.R.ReviewerNuisances, publicreportNuisances1...)
for _, rel := range publicreportNuisances1 {
rel.R.ReviewerUser = user0
}
return nil
}
func (user0 *User) AttachReviewerNuisances(ctx context.Context, exec bob.Executor, related ...*PublicreportNuisance) error {
if len(related) == 0 {
return nil
}
var err error
publicreportNuisances1 := PublicreportNuisanceSlice(related)
_, err = attachUserReviewerNuisances0(ctx, exec, len(related), publicreportNuisances1, user0)
if err != nil {
return err
}
user0.R.ReviewerNuisances = append(user0.R.ReviewerNuisances, publicreportNuisances1...)
for _, rel := range related {
rel.R.ReviewerUser = user0
}
return nil
}
func insertUserReviewerWaters0(ctx context.Context, exec bob.Executor, publicreportWaters1 []*PublicreportWaterSetter, user0 *User) (PublicreportWaterSlice, error) {
for i := range publicreportWaters1 {
publicreportWaters1[i].ReviewerID = omitnull.From(user0.ID)
}
ret, err := PublicreportWaters.Insert(bob.ToMods(publicreportWaters1...)).All(ctx, exec)
if err != nil {
return ret, fmt.Errorf("insertUserReviewerWaters0: %w", err)
}
return ret, nil
}
func attachUserReviewerWaters0(ctx context.Context, exec bob.Executor, count int, publicreportWaters1 PublicreportWaterSlice, user0 *User) (PublicreportWaterSlice, error) {
setter := &PublicreportWaterSetter{
ReviewerID: omitnull.From(user0.ID),
}
err := publicreportWaters1.UpdateAll(ctx, exec, *setter)
if err != nil {
return nil, fmt.Errorf("attachUserReviewerWaters0: %w", err)
}
return publicreportWaters1, nil
}
func (user0 *User) InsertReviewerWaters(ctx context.Context, exec bob.Executor, related ...*PublicreportWaterSetter) error {
if len(related) == 0 {
return nil
}
var err error
publicreportWaters1, err := insertUserReviewerWaters0(ctx, exec, related, user0)
if err != nil {
return err
}
user0.R.ReviewerWaters = append(user0.R.ReviewerWaters, publicreportWaters1...)
for _, rel := range publicreportWaters1 {
rel.R.ReviewerUser = user0
}
return nil
}
func (user0 *User) AttachReviewerWaters(ctx context.Context, exec bob.Executor, related ...*PublicreportWater) error {
if len(related) == 0 {
return nil
}
var err error
publicreportWaters1 := PublicreportWaterSlice(related)
_, err = attachUserReviewerWaters0(ctx, exec, len(related), publicreportWaters1, user0)
if err != nil {
return err
}
user0.R.ReviewerWaters = append(user0.R.ReviewerWaters, publicreportWaters1...)
for _, rel := range related {
rel.R.ReviewerUser = user0
}
return nil
}
func insertUserCreatorResidents0(ctx context.Context, exec bob.Executor, residents1 []*ResidentSetter, user0 *User) (ResidentSlice, error) { func insertUserCreatorResidents0(ctx context.Context, exec bob.Executor, residents1 []*ResidentSetter, user0 *User) (ResidentSlice, error) {
for i := range residents1 { for i := range residents1 {
residents1[i].Creator = omit.From(user0.ID) residents1[i].Creator = omit.From(user0.ID)
@ -2689,6 +2875,34 @@ func (o *User) Preload(name string, retrieved any) error {
} }
} }
return nil return nil
case "ReviewerNuisances":
rels, ok := retrieved.(PublicreportNuisanceSlice)
if !ok {
return fmt.Errorf("user cannot load %T as %q", retrieved, name)
}
o.R.ReviewerNuisances = rels
for _, rel := range rels {
if rel != nil {
rel.R.ReviewerUser = o
}
}
return nil
case "ReviewerWaters":
rels, ok := retrieved.(PublicreportWaterSlice)
if !ok {
return fmt.Errorf("user cannot load %T as %q", retrieved, name)
}
o.R.ReviewerWaters = rels
for _, rel := range rels {
if rel != nil {
rel.R.ReviewerUser = o
}
}
return nil
case "CreatorResidents": case "CreatorResidents":
rels, ok := retrieved.(ResidentSlice) rels, ok := retrieved.(ResidentSlice)
if !ok { if !ok {
@ -2826,6 +3040,8 @@ type userThenLoader[Q orm.Loadable] struct {
CreatorNoteImages func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q] CreatorNoteImages func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
DeletorNoteImages func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q] DeletorNoteImages func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
UserNotifications func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q] UserNotifications func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
ReviewerNuisances func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
ReviewerWaters func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
CreatorResidents func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q] CreatorResidents func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
CreatorReviewTasks func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q] CreatorReviewTasks func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
ReviewerReviewTasks func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q] ReviewerReviewTasks func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
@ -2875,6 +3091,12 @@ func buildUserThenLoader[Q orm.Loadable]() userThenLoader[Q] {
type UserNotificationsLoadInterface interface { type UserNotificationsLoadInterface interface {
LoadUserNotifications(context.Context, bob.Executor, ...bob.Mod[*dialect.SelectQuery]) error LoadUserNotifications(context.Context, bob.Executor, ...bob.Mod[*dialect.SelectQuery]) error
} }
type ReviewerNuisancesLoadInterface interface {
LoadReviewerNuisances(context.Context, bob.Executor, ...bob.Mod[*dialect.SelectQuery]) error
}
type ReviewerWatersLoadInterface interface {
LoadReviewerWaters(context.Context, bob.Executor, ...bob.Mod[*dialect.SelectQuery]) error
}
type CreatorResidentsLoadInterface interface { type CreatorResidentsLoadInterface interface {
LoadCreatorResidents(context.Context, bob.Executor, ...bob.Mod[*dialect.SelectQuery]) error LoadCreatorResidents(context.Context, bob.Executor, ...bob.Mod[*dialect.SelectQuery]) error
} }
@ -2976,6 +3198,18 @@ func buildUserThenLoader[Q orm.Loadable]() userThenLoader[Q] {
return retrieved.LoadUserNotifications(ctx, exec, mods...) return retrieved.LoadUserNotifications(ctx, exec, mods...)
}, },
), ),
ReviewerNuisances: thenLoadBuilder[Q](
"ReviewerNuisances",
func(ctx context.Context, exec bob.Executor, retrieved ReviewerNuisancesLoadInterface, mods ...bob.Mod[*dialect.SelectQuery]) error {
return retrieved.LoadReviewerNuisances(ctx, exec, mods...)
},
),
ReviewerWaters: thenLoadBuilder[Q](
"ReviewerWaters",
func(ctx context.Context, exec bob.Executor, retrieved ReviewerWatersLoadInterface, mods ...bob.Mod[*dialect.SelectQuery]) error {
return retrieved.LoadReviewerWaters(ctx, exec, mods...)
},
),
CreatorResidents: thenLoadBuilder[Q]( CreatorResidents: thenLoadBuilder[Q](
"CreatorResidents", "CreatorResidents",
func(ctx context.Context, exec bob.Executor, retrieved CreatorResidentsLoadInterface, mods ...bob.Mod[*dialect.SelectQuery]) error { func(ctx context.Context, exec bob.Executor, retrieved CreatorResidentsLoadInterface, mods ...bob.Mod[*dialect.SelectQuery]) error {
@ -3823,6 +4057,134 @@ func (os UserSlice) LoadUserNotifications(ctx context.Context, exec bob.Executor
return nil return nil
} }
// LoadReviewerNuisances loads the user's ReviewerNuisances into the .R struct
func (o *User) LoadReviewerNuisances(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
if o == nil {
return nil
}
// Reset the relationship
o.R.ReviewerNuisances = nil
related, err := o.ReviewerNuisances(mods...).All(ctx, exec)
if err != nil {
return err
}
for _, rel := range related {
rel.R.ReviewerUser = o
}
o.R.ReviewerNuisances = related
return nil
}
// LoadReviewerNuisances loads the user's ReviewerNuisances into the .R struct
func (os UserSlice) LoadReviewerNuisances(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
if len(os) == 0 {
return nil
}
publicreportNuisances, err := os.ReviewerNuisances(mods...).All(ctx, exec)
if err != nil {
return err
}
for _, o := range os {
if o == nil {
continue
}
o.R.ReviewerNuisances = nil
}
for _, o := range os {
if o == nil {
continue
}
for _, rel := range publicreportNuisances {
if !rel.ReviewerID.IsValue() {
continue
}
if !(rel.ReviewerID.IsValue() && o.ID == rel.ReviewerID.MustGet()) {
continue
}
rel.R.ReviewerUser = o
o.R.ReviewerNuisances = append(o.R.ReviewerNuisances, rel)
}
}
return nil
}
// LoadReviewerWaters loads the user's ReviewerWaters into the .R struct
func (o *User) LoadReviewerWaters(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
if o == nil {
return nil
}
// Reset the relationship
o.R.ReviewerWaters = nil
related, err := o.ReviewerWaters(mods...).All(ctx, exec)
if err != nil {
return err
}
for _, rel := range related {
rel.R.ReviewerUser = o
}
o.R.ReviewerWaters = related
return nil
}
// LoadReviewerWaters loads the user's ReviewerWaters into the .R struct
func (os UserSlice) LoadReviewerWaters(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
if len(os) == 0 {
return nil
}
publicreportWaters, err := os.ReviewerWaters(mods...).All(ctx, exec)
if err != nil {
return err
}
for _, o := range os {
if o == nil {
continue
}
o.R.ReviewerWaters = nil
}
for _, o := range os {
if o == nil {
continue
}
for _, rel := range publicreportWaters {
if !rel.ReviewerID.IsValue() {
continue
}
if !(rel.ReviewerID.IsValue() && o.ID == rel.ReviewerID.MustGet()) {
continue
}
rel.R.ReviewerUser = o
o.R.ReviewerWaters = append(o.R.ReviewerWaters, rel)
}
}
return nil
}
// LoadCreatorResidents loads the user's CreatorResidents into the .R struct // LoadCreatorResidents loads the user's CreatorResidents into the .R struct
func (o *User) LoadCreatorResidents(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error { func (o *User) LoadCreatorResidents(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
if o == nil { if o == nil {

View file

@ -1,4 +0,0 @@
-- UserByUsername
SELECT * FROM public.user_ WHERE
username = $1 AND
password_hash_type = 'bcrypt-14';