nidus-sync/db/models/publicreport.water.bob.go

973 lines
31 KiB
Go

// Code generated by BobGen psql v0.42.5. DO NOT EDIT.
// This file is meant to be re-generated in place and/or deleted at any time.
package models
import (
"context"
"fmt"
"io"
"github.com/Gleipnir-Technology/bob"
"github.com/Gleipnir-Technology/bob/dialect/psql"
"github.com/Gleipnir-Technology/bob/dialect/psql/dialect"
"github.com/Gleipnir-Technology/bob/dialect/psql/dm"
"github.com/Gleipnir-Technology/bob/dialect/psql/sm"
"github.com/Gleipnir-Technology/bob/dialect/psql/um"
"github.com/Gleipnir-Technology/bob/expr"
"github.com/Gleipnir-Technology/bob/orm"
"github.com/Gleipnir-Technology/bob/types/pgtypes"
enums "github.com/Gleipnir-Technology/nidus-sync/db/enums"
"github.com/aarondl/opt/omit"
)
// PublicreportWater is an object representing the database table.
type PublicreportWater struct {
AccessComments string `db:"access_comments" `
AccessGate bool `db:"access_gate" `
AccessFence bool `db:"access_fence" `
AccessLocked bool `db:"access_locked" `
AccessDog bool `db:"access_dog" `
AccessOther bool `db:"access_other" `
Comments string `db:"comments" `
IsReporterConfidential bool `db:"is_reporter_confidential" `
IsReporterOwner bool `db:"is_reporter_owner" `
HasAdult bool `db:"has_adult" `
HasBackyardPermission bool `db:"has_backyard_permission" `
HasLarvae bool `db:"has_larvae" `
HasPupae bool `db:"has_pupae" `
OwnerEmail string `db:"owner_email" `
OwnerName string `db:"owner_name" `
OwnerPhone string `db:"owner_phone" `
ReportID int32 `db:"report_id,pk" `
Duration enums.PublicreportNuisancedurationtype `db:"duration" `
R publicreportWaterR `db:"-" `
}
// PublicreportWaterSlice is an alias for a slice of pointers to PublicreportWater.
// This should almost always be used instead of []*PublicreportWater.
type PublicreportWaterSlice []*PublicreportWater
// PublicreportWaters contains methods to work with the water table
var PublicreportWaters = psql.NewTablex[*PublicreportWater, PublicreportWaterSlice, *PublicreportWaterSetter]("publicreport", "water", buildPublicreportWaterColumns("publicreport.water"))
// PublicreportWatersQuery is a query on the water table
type PublicreportWatersQuery = *psql.ViewQuery[*PublicreportWater, PublicreportWaterSlice]
// publicreportWaterR is where relationships are stored.
type publicreportWaterR struct {
Report *PublicreportReport // publicreport.water.water_report_id_fkey
}
func buildPublicreportWaterColumns(alias string) publicreportWaterColumns {
return publicreportWaterColumns{
ColumnsExpr: expr.NewColumnsExpr(
"access_comments", "access_gate", "access_fence", "access_locked", "access_dog", "access_other", "comments", "is_reporter_confidential", "is_reporter_owner", "has_adult", "has_backyard_permission", "has_larvae", "has_pupae", "owner_email", "owner_name", "owner_phone", "report_id", "duration",
).WithParent("publicreport.water"),
tableAlias: alias,
AccessComments: psql.Quote(alias, "access_comments"),
AccessGate: psql.Quote(alias, "access_gate"),
AccessFence: psql.Quote(alias, "access_fence"),
AccessLocked: psql.Quote(alias, "access_locked"),
AccessDog: psql.Quote(alias, "access_dog"),
AccessOther: psql.Quote(alias, "access_other"),
Comments: psql.Quote(alias, "comments"),
IsReporterConfidential: psql.Quote(alias, "is_reporter_confidential"),
IsReporterOwner: psql.Quote(alias, "is_reporter_owner"),
HasAdult: psql.Quote(alias, "has_adult"),
HasBackyardPermission: psql.Quote(alias, "has_backyard_permission"),
HasLarvae: psql.Quote(alias, "has_larvae"),
HasPupae: psql.Quote(alias, "has_pupae"),
OwnerEmail: psql.Quote(alias, "owner_email"),
OwnerName: psql.Quote(alias, "owner_name"),
OwnerPhone: psql.Quote(alias, "owner_phone"),
ReportID: psql.Quote(alias, "report_id"),
Duration: psql.Quote(alias, "duration"),
}
}
type publicreportWaterColumns struct {
expr.ColumnsExpr
tableAlias string
AccessComments psql.Expression
AccessGate psql.Expression
AccessFence psql.Expression
AccessLocked psql.Expression
AccessDog psql.Expression
AccessOther psql.Expression
Comments psql.Expression
IsReporterConfidential psql.Expression
IsReporterOwner psql.Expression
HasAdult psql.Expression
HasBackyardPermission psql.Expression
HasLarvae psql.Expression
HasPupae psql.Expression
OwnerEmail psql.Expression
OwnerName psql.Expression
OwnerPhone psql.Expression
ReportID psql.Expression
Duration psql.Expression
}
func (c publicreportWaterColumns) Alias() string {
return c.tableAlias
}
func (publicreportWaterColumns) AliasedAs(alias string) publicreportWaterColumns {
return buildPublicreportWaterColumns(alias)
}
// PublicreportWaterSetter is used for insert/upsert/update operations
// All values are optional, and do not have to be set
// Generated columns are not included
type PublicreportWaterSetter struct {
AccessComments omit.Val[string] `db:"access_comments" `
AccessGate omit.Val[bool] `db:"access_gate" `
AccessFence omit.Val[bool] `db:"access_fence" `
AccessLocked omit.Val[bool] `db:"access_locked" `
AccessDog omit.Val[bool] `db:"access_dog" `
AccessOther omit.Val[bool] `db:"access_other" `
Comments omit.Val[string] `db:"comments" `
IsReporterConfidential omit.Val[bool] `db:"is_reporter_confidential" `
IsReporterOwner omit.Val[bool] `db:"is_reporter_owner" `
HasAdult omit.Val[bool] `db:"has_adult" `
HasBackyardPermission omit.Val[bool] `db:"has_backyard_permission" `
HasLarvae omit.Val[bool] `db:"has_larvae" `
HasPupae omit.Val[bool] `db:"has_pupae" `
OwnerEmail omit.Val[string] `db:"owner_email" `
OwnerName omit.Val[string] `db:"owner_name" `
OwnerPhone omit.Val[string] `db:"owner_phone" `
ReportID omit.Val[int32] `db:"report_id,pk" `
Duration omit.Val[enums.PublicreportNuisancedurationtype] `db:"duration" `
}
func (s PublicreportWaterSetter) SetColumns() []string {
vals := make([]string, 0, 18)
if s.AccessComments.IsValue() {
vals = append(vals, "access_comments")
}
if s.AccessGate.IsValue() {
vals = append(vals, "access_gate")
}
if s.AccessFence.IsValue() {
vals = append(vals, "access_fence")
}
if s.AccessLocked.IsValue() {
vals = append(vals, "access_locked")
}
if s.AccessDog.IsValue() {
vals = append(vals, "access_dog")
}
if s.AccessOther.IsValue() {
vals = append(vals, "access_other")
}
if s.Comments.IsValue() {
vals = append(vals, "comments")
}
if s.IsReporterConfidential.IsValue() {
vals = append(vals, "is_reporter_confidential")
}
if s.IsReporterOwner.IsValue() {
vals = append(vals, "is_reporter_owner")
}
if s.HasAdult.IsValue() {
vals = append(vals, "has_adult")
}
if s.HasBackyardPermission.IsValue() {
vals = append(vals, "has_backyard_permission")
}
if s.HasLarvae.IsValue() {
vals = append(vals, "has_larvae")
}
if s.HasPupae.IsValue() {
vals = append(vals, "has_pupae")
}
if s.OwnerEmail.IsValue() {
vals = append(vals, "owner_email")
}
if s.OwnerName.IsValue() {
vals = append(vals, "owner_name")
}
if s.OwnerPhone.IsValue() {
vals = append(vals, "owner_phone")
}
if s.ReportID.IsValue() {
vals = append(vals, "report_id")
}
if s.Duration.IsValue() {
vals = append(vals, "duration")
}
return vals
}
func (s PublicreportWaterSetter) Overwrite(t *PublicreportWater) {
if s.AccessComments.IsValue() {
t.AccessComments = s.AccessComments.MustGet()
}
if s.AccessGate.IsValue() {
t.AccessGate = s.AccessGate.MustGet()
}
if s.AccessFence.IsValue() {
t.AccessFence = s.AccessFence.MustGet()
}
if s.AccessLocked.IsValue() {
t.AccessLocked = s.AccessLocked.MustGet()
}
if s.AccessDog.IsValue() {
t.AccessDog = s.AccessDog.MustGet()
}
if s.AccessOther.IsValue() {
t.AccessOther = s.AccessOther.MustGet()
}
if s.Comments.IsValue() {
t.Comments = s.Comments.MustGet()
}
if s.IsReporterConfidential.IsValue() {
t.IsReporterConfidential = s.IsReporterConfidential.MustGet()
}
if s.IsReporterOwner.IsValue() {
t.IsReporterOwner = s.IsReporterOwner.MustGet()
}
if s.HasAdult.IsValue() {
t.HasAdult = s.HasAdult.MustGet()
}
if s.HasBackyardPermission.IsValue() {
t.HasBackyardPermission = s.HasBackyardPermission.MustGet()
}
if s.HasLarvae.IsValue() {
t.HasLarvae = s.HasLarvae.MustGet()
}
if s.HasPupae.IsValue() {
t.HasPupae = s.HasPupae.MustGet()
}
if s.OwnerEmail.IsValue() {
t.OwnerEmail = s.OwnerEmail.MustGet()
}
if s.OwnerName.IsValue() {
t.OwnerName = s.OwnerName.MustGet()
}
if s.OwnerPhone.IsValue() {
t.OwnerPhone = s.OwnerPhone.MustGet()
}
if s.ReportID.IsValue() {
t.ReportID = s.ReportID.MustGet()
}
if s.Duration.IsValue() {
t.Duration = s.Duration.MustGet()
}
}
func (s *PublicreportWaterSetter) Apply(q *dialect.InsertQuery) {
q.AppendHooks(func(ctx context.Context, exec bob.Executor) (context.Context, error) {
return PublicreportWaters.BeforeInsertHooks.RunHooks(ctx, exec, s)
})
q.AppendValues(bob.ExpressionFunc(func(ctx context.Context, w io.StringWriter, d bob.Dialect, start int) ([]any, error) {
vals := make([]bob.Expression, 18)
if s.AccessComments.IsValue() {
vals[0] = psql.Arg(s.AccessComments.MustGet())
} else {
vals[0] = psql.Raw("DEFAULT")
}
if s.AccessGate.IsValue() {
vals[1] = psql.Arg(s.AccessGate.MustGet())
} else {
vals[1] = psql.Raw("DEFAULT")
}
if s.AccessFence.IsValue() {
vals[2] = psql.Arg(s.AccessFence.MustGet())
} else {
vals[2] = psql.Raw("DEFAULT")
}
if s.AccessLocked.IsValue() {
vals[3] = psql.Arg(s.AccessLocked.MustGet())
} else {
vals[3] = psql.Raw("DEFAULT")
}
if s.AccessDog.IsValue() {
vals[4] = psql.Arg(s.AccessDog.MustGet())
} else {
vals[4] = psql.Raw("DEFAULT")
}
if s.AccessOther.IsValue() {
vals[5] = psql.Arg(s.AccessOther.MustGet())
} else {
vals[5] = psql.Raw("DEFAULT")
}
if s.Comments.IsValue() {
vals[6] = psql.Arg(s.Comments.MustGet())
} else {
vals[6] = psql.Raw("DEFAULT")
}
if s.IsReporterConfidential.IsValue() {
vals[7] = psql.Arg(s.IsReporterConfidential.MustGet())
} else {
vals[7] = psql.Raw("DEFAULT")
}
if s.IsReporterOwner.IsValue() {
vals[8] = psql.Arg(s.IsReporterOwner.MustGet())
} else {
vals[8] = psql.Raw("DEFAULT")
}
if s.HasAdult.IsValue() {
vals[9] = psql.Arg(s.HasAdult.MustGet())
} else {
vals[9] = psql.Raw("DEFAULT")
}
if s.HasBackyardPermission.IsValue() {
vals[10] = psql.Arg(s.HasBackyardPermission.MustGet())
} else {
vals[10] = psql.Raw("DEFAULT")
}
if s.HasLarvae.IsValue() {
vals[11] = psql.Arg(s.HasLarvae.MustGet())
} else {
vals[11] = psql.Raw("DEFAULT")
}
if s.HasPupae.IsValue() {
vals[12] = psql.Arg(s.HasPupae.MustGet())
} else {
vals[12] = psql.Raw("DEFAULT")
}
if s.OwnerEmail.IsValue() {
vals[13] = psql.Arg(s.OwnerEmail.MustGet())
} else {
vals[13] = psql.Raw("DEFAULT")
}
if s.OwnerName.IsValue() {
vals[14] = psql.Arg(s.OwnerName.MustGet())
} else {
vals[14] = psql.Raw("DEFAULT")
}
if s.OwnerPhone.IsValue() {
vals[15] = psql.Arg(s.OwnerPhone.MustGet())
} else {
vals[15] = psql.Raw("DEFAULT")
}
if s.ReportID.IsValue() {
vals[16] = psql.Arg(s.ReportID.MustGet())
} else {
vals[16] = psql.Raw("DEFAULT")
}
if s.Duration.IsValue() {
vals[17] = psql.Arg(s.Duration.MustGet())
} else {
vals[17] = psql.Raw("DEFAULT")
}
return bob.ExpressSlice(ctx, w, d, start, vals, "", ", ", "")
}))
}
func (s PublicreportWaterSetter) UpdateMod() bob.Mod[*dialect.UpdateQuery] {
return um.Set(s.Expressions()...)
}
func (s PublicreportWaterSetter) Expressions(prefix ...string) []bob.Expression {
exprs := make([]bob.Expression, 0, 18)
if s.AccessComments.IsValue() {
exprs = append(exprs, expr.Join{Sep: " = ", Exprs: []bob.Expression{
psql.Quote(append(prefix, "access_comments")...),
psql.Arg(s.AccessComments),
}})
}
if s.AccessGate.IsValue() {
exprs = append(exprs, expr.Join{Sep: " = ", Exprs: []bob.Expression{
psql.Quote(append(prefix, "access_gate")...),
psql.Arg(s.AccessGate),
}})
}
if s.AccessFence.IsValue() {
exprs = append(exprs, expr.Join{Sep: " = ", Exprs: []bob.Expression{
psql.Quote(append(prefix, "access_fence")...),
psql.Arg(s.AccessFence),
}})
}
if s.AccessLocked.IsValue() {
exprs = append(exprs, expr.Join{Sep: " = ", Exprs: []bob.Expression{
psql.Quote(append(prefix, "access_locked")...),
psql.Arg(s.AccessLocked),
}})
}
if s.AccessDog.IsValue() {
exprs = append(exprs, expr.Join{Sep: " = ", Exprs: []bob.Expression{
psql.Quote(append(prefix, "access_dog")...),
psql.Arg(s.AccessDog),
}})
}
if s.AccessOther.IsValue() {
exprs = append(exprs, expr.Join{Sep: " = ", Exprs: []bob.Expression{
psql.Quote(append(prefix, "access_other")...),
psql.Arg(s.AccessOther),
}})
}
if s.Comments.IsValue() {
exprs = append(exprs, expr.Join{Sep: " = ", Exprs: []bob.Expression{
psql.Quote(append(prefix, "comments")...),
psql.Arg(s.Comments),
}})
}
if s.IsReporterConfidential.IsValue() {
exprs = append(exprs, expr.Join{Sep: " = ", Exprs: []bob.Expression{
psql.Quote(append(prefix, "is_reporter_confidential")...),
psql.Arg(s.IsReporterConfidential),
}})
}
if s.IsReporterOwner.IsValue() {
exprs = append(exprs, expr.Join{Sep: " = ", Exprs: []bob.Expression{
psql.Quote(append(prefix, "is_reporter_owner")...),
psql.Arg(s.IsReporterOwner),
}})
}
if s.HasAdult.IsValue() {
exprs = append(exprs, expr.Join{Sep: " = ", Exprs: []bob.Expression{
psql.Quote(append(prefix, "has_adult")...),
psql.Arg(s.HasAdult),
}})
}
if s.HasBackyardPermission.IsValue() {
exprs = append(exprs, expr.Join{Sep: " = ", Exprs: []bob.Expression{
psql.Quote(append(prefix, "has_backyard_permission")...),
psql.Arg(s.HasBackyardPermission),
}})
}
if s.HasLarvae.IsValue() {
exprs = append(exprs, expr.Join{Sep: " = ", Exprs: []bob.Expression{
psql.Quote(append(prefix, "has_larvae")...),
psql.Arg(s.HasLarvae),
}})
}
if s.HasPupae.IsValue() {
exprs = append(exprs, expr.Join{Sep: " = ", Exprs: []bob.Expression{
psql.Quote(append(prefix, "has_pupae")...),
psql.Arg(s.HasPupae),
}})
}
if s.OwnerEmail.IsValue() {
exprs = append(exprs, expr.Join{Sep: " = ", Exprs: []bob.Expression{
psql.Quote(append(prefix, "owner_email")...),
psql.Arg(s.OwnerEmail),
}})
}
if s.OwnerName.IsValue() {
exprs = append(exprs, expr.Join{Sep: " = ", Exprs: []bob.Expression{
psql.Quote(append(prefix, "owner_name")...),
psql.Arg(s.OwnerName),
}})
}
if s.OwnerPhone.IsValue() {
exprs = append(exprs, expr.Join{Sep: " = ", Exprs: []bob.Expression{
psql.Quote(append(prefix, "owner_phone")...),
psql.Arg(s.OwnerPhone),
}})
}
if s.ReportID.IsValue() {
exprs = append(exprs, expr.Join{Sep: " = ", Exprs: []bob.Expression{
psql.Quote(append(prefix, "report_id")...),
psql.Arg(s.ReportID),
}})
}
if s.Duration.IsValue() {
exprs = append(exprs, expr.Join{Sep: " = ", Exprs: []bob.Expression{
psql.Quote(append(prefix, "duration")...),
psql.Arg(s.Duration),
}})
}
return exprs
}
// FindPublicreportWater retrieves a single record by primary key
// If cols is empty Find will return all columns.
func FindPublicreportWater(ctx context.Context, exec bob.Executor, ReportIDPK int32, cols ...string) (*PublicreportWater, error) {
if len(cols) == 0 {
return PublicreportWaters.Query(
sm.Where(PublicreportWaters.Columns.ReportID.EQ(psql.Arg(ReportIDPK))),
).One(ctx, exec)
}
return PublicreportWaters.Query(
sm.Where(PublicreportWaters.Columns.ReportID.EQ(psql.Arg(ReportIDPK))),
sm.Columns(PublicreportWaters.Columns.Only(cols...)),
).One(ctx, exec)
}
// PublicreportWaterExists checks the presence of a single record by primary key
func PublicreportWaterExists(ctx context.Context, exec bob.Executor, ReportIDPK int32) (bool, error) {
return PublicreportWaters.Query(
sm.Where(PublicreportWaters.Columns.ReportID.EQ(psql.Arg(ReportIDPK))),
).Exists(ctx, exec)
}
// AfterQueryHook is called after PublicreportWater is retrieved from the database
func (o *PublicreportWater) AfterQueryHook(ctx context.Context, exec bob.Executor, queryType bob.QueryType) error {
var err error
switch queryType {
case bob.QueryTypeSelect:
ctx, err = PublicreportWaters.AfterSelectHooks.RunHooks(ctx, exec, PublicreportWaterSlice{o})
case bob.QueryTypeInsert:
ctx, err = PublicreportWaters.AfterInsertHooks.RunHooks(ctx, exec, PublicreportWaterSlice{o})
case bob.QueryTypeUpdate:
ctx, err = PublicreportWaters.AfterUpdateHooks.RunHooks(ctx, exec, PublicreportWaterSlice{o})
case bob.QueryTypeDelete:
ctx, err = PublicreportWaters.AfterDeleteHooks.RunHooks(ctx, exec, PublicreportWaterSlice{o})
}
return err
}
// primaryKeyVals returns the primary key values of the PublicreportWater
func (o *PublicreportWater) primaryKeyVals() bob.Expression {
return psql.Arg(o.ReportID)
}
func (o *PublicreportWater) pkEQ() dialect.Expression {
return psql.Quote("publicreport.water", "report_id").EQ(bob.ExpressionFunc(func(ctx context.Context, w io.StringWriter, d bob.Dialect, start int) ([]any, error) {
return o.primaryKeyVals().WriteSQL(ctx, w, d, start)
}))
}
// Update uses an executor to update the PublicreportWater
func (o *PublicreportWater) Update(ctx context.Context, exec bob.Executor, s *PublicreportWaterSetter) error {
v, err := PublicreportWaters.Update(s.UpdateMod(), um.Where(o.pkEQ())).One(ctx, exec)
if err != nil {
return err
}
o.R = v.R
*o = *v
return nil
}
// Delete deletes a single PublicreportWater record with an executor
func (o *PublicreportWater) Delete(ctx context.Context, exec bob.Executor) error {
_, err := PublicreportWaters.Delete(dm.Where(o.pkEQ())).Exec(ctx, exec)
return err
}
// Reload refreshes the PublicreportWater using the executor
func (o *PublicreportWater) Reload(ctx context.Context, exec bob.Executor) error {
o2, err := PublicreportWaters.Query(
sm.Where(PublicreportWaters.Columns.ReportID.EQ(psql.Arg(o.ReportID))),
).One(ctx, exec)
if err != nil {
return err
}
o2.R = o.R
*o = *o2
return nil
}
// AfterQueryHook is called after PublicreportWaterSlice is retrieved from the database
func (o PublicreportWaterSlice) AfterQueryHook(ctx context.Context, exec bob.Executor, queryType bob.QueryType) error {
var err error
switch queryType {
case bob.QueryTypeSelect:
ctx, err = PublicreportWaters.AfterSelectHooks.RunHooks(ctx, exec, o)
case bob.QueryTypeInsert:
ctx, err = PublicreportWaters.AfterInsertHooks.RunHooks(ctx, exec, o)
case bob.QueryTypeUpdate:
ctx, err = PublicreportWaters.AfterUpdateHooks.RunHooks(ctx, exec, o)
case bob.QueryTypeDelete:
ctx, err = PublicreportWaters.AfterDeleteHooks.RunHooks(ctx, exec, o)
}
return err
}
func (o PublicreportWaterSlice) pkIN() dialect.Expression {
if len(o) == 0 {
return psql.Raw("NULL")
}
return psql.Quote("publicreport.water", "report_id").In(bob.ExpressionFunc(func(ctx context.Context, w io.StringWriter, d bob.Dialect, start int) ([]any, error) {
pkPairs := make([]bob.Expression, len(o))
for i, row := range o {
pkPairs[i] = row.primaryKeyVals()
}
return bob.ExpressSlice(ctx, w, d, start, pkPairs, "", ", ", "")
}))
}
// copyMatchingRows finds models in the given slice that have the same primary key
// then it first copies the existing relationships from the old model to the new model
// and then replaces the old model in the slice with the new model
func (o PublicreportWaterSlice) copyMatchingRows(from ...*PublicreportWater) {
for i, old := range o {
for _, new := range from {
if new.ReportID != old.ReportID {
continue
}
new.R = old.R
o[i] = new
break
}
}
}
// UpdateMod modifies an update query with "WHERE primary_key IN (o...)"
func (o PublicreportWaterSlice) UpdateMod() bob.Mod[*dialect.UpdateQuery] {
return bob.ModFunc[*dialect.UpdateQuery](func(q *dialect.UpdateQuery) {
q.AppendHooks(func(ctx context.Context, exec bob.Executor) (context.Context, error) {
return PublicreportWaters.BeforeUpdateHooks.RunHooks(ctx, exec, o)
})
q.AppendLoader(bob.LoaderFunc(func(ctx context.Context, exec bob.Executor, retrieved any) error {
var err error
switch retrieved := retrieved.(type) {
case *PublicreportWater:
o.copyMatchingRows(retrieved)
case []*PublicreportWater:
o.copyMatchingRows(retrieved...)
case PublicreportWaterSlice:
o.copyMatchingRows(retrieved...)
default:
// If the retrieved value is not a PublicreportWater or a slice of PublicreportWater
// then run the AfterUpdateHooks on the slice
_, err = PublicreportWaters.AfterUpdateHooks.RunHooks(ctx, exec, o)
}
return err
}))
q.AppendWhere(o.pkIN())
})
}
// DeleteMod modifies an delete query with "WHERE primary_key IN (o...)"
func (o PublicreportWaterSlice) DeleteMod() bob.Mod[*dialect.DeleteQuery] {
return bob.ModFunc[*dialect.DeleteQuery](func(q *dialect.DeleteQuery) {
q.AppendHooks(func(ctx context.Context, exec bob.Executor) (context.Context, error) {
return PublicreportWaters.BeforeDeleteHooks.RunHooks(ctx, exec, o)
})
q.AppendLoader(bob.LoaderFunc(func(ctx context.Context, exec bob.Executor, retrieved any) error {
var err error
switch retrieved := retrieved.(type) {
case *PublicreportWater:
o.copyMatchingRows(retrieved)
case []*PublicreportWater:
o.copyMatchingRows(retrieved...)
case PublicreportWaterSlice:
o.copyMatchingRows(retrieved...)
default:
// If the retrieved value is not a PublicreportWater or a slice of PublicreportWater
// then run the AfterDeleteHooks on the slice
_, err = PublicreportWaters.AfterDeleteHooks.RunHooks(ctx, exec, o)
}
return err
}))
q.AppendWhere(o.pkIN())
})
}
func (o PublicreportWaterSlice) UpdateAll(ctx context.Context, exec bob.Executor, vals PublicreportWaterSetter) error {
if len(o) == 0 {
return nil
}
_, err := PublicreportWaters.Update(vals.UpdateMod(), o.UpdateMod()).All(ctx, exec)
return err
}
func (o PublicreportWaterSlice) DeleteAll(ctx context.Context, exec bob.Executor) error {
if len(o) == 0 {
return nil
}
_, err := PublicreportWaters.Delete(o.DeleteMod()).Exec(ctx, exec)
return err
}
func (o PublicreportWaterSlice) ReloadAll(ctx context.Context, exec bob.Executor) error {
if len(o) == 0 {
return nil
}
o2, err := PublicreportWaters.Query(sm.Where(o.pkIN())).All(ctx, exec)
if err != nil {
return err
}
o.copyMatchingRows(o2...)
return nil
}
// Report starts a query for related objects on publicreport.report
func (o *PublicreportWater) Report(mods ...bob.Mod[*dialect.SelectQuery]) PublicreportReportsQuery {
return PublicreportReports.Query(append(mods,
sm.Where(PublicreportReports.Columns.ID.EQ(psql.Arg(o.ReportID))),
)...)
}
func (os PublicreportWaterSlice) Report(mods ...bob.Mod[*dialect.SelectQuery]) PublicreportReportsQuery {
pkReportID := make(pgtypes.Array[int32], 0, len(os))
for _, o := range os {
if o == nil {
continue
}
pkReportID = append(pkReportID, o.ReportID)
}
PKArgExpr := psql.Select(sm.Columns(
psql.F("unnest", psql.Cast(psql.Arg(pkReportID), "integer[]")),
))
return PublicreportReports.Query(append(mods,
sm.Where(psql.Group(PublicreportReports.Columns.ID).OP("IN", PKArgExpr)),
)...)
}
func attachPublicreportWaterReport0(ctx context.Context, exec bob.Executor, count int, publicreportWater0 *PublicreportWater, publicreportReport1 *PublicreportReport) (*PublicreportWater, error) {
setter := &PublicreportWaterSetter{
ReportID: omit.From(publicreportReport1.ID),
}
err := publicreportWater0.Update(ctx, exec, setter)
if err != nil {
return nil, fmt.Errorf("attachPublicreportWaterReport0: %w", err)
}
return publicreportWater0, nil
}
func (publicreportWater0 *PublicreportWater) InsertReport(ctx context.Context, exec bob.Executor, related *PublicreportReportSetter) error {
var err error
publicreportReport1, err := PublicreportReports.Insert(related).One(ctx, exec)
if err != nil {
return fmt.Errorf("inserting related objects: %w", err)
}
_, err = attachPublicreportWaterReport0(ctx, exec, 1, publicreportWater0, publicreportReport1)
if err != nil {
return err
}
publicreportWater0.R.Report = publicreportReport1
publicreportReport1.R.Water = publicreportWater0
return nil
}
func (publicreportWater0 *PublicreportWater) AttachReport(ctx context.Context, exec bob.Executor, publicreportReport1 *PublicreportReport) error {
var err error
_, err = attachPublicreportWaterReport0(ctx, exec, 1, publicreportWater0, publicreportReport1)
if err != nil {
return err
}
publicreportWater0.R.Report = publicreportReport1
publicreportReport1.R.Water = publicreportWater0
return nil
}
type publicreportWaterWhere[Q psql.Filterable] struct {
AccessComments psql.WhereMod[Q, string]
AccessGate psql.WhereMod[Q, bool]
AccessFence psql.WhereMod[Q, bool]
AccessLocked psql.WhereMod[Q, bool]
AccessDog psql.WhereMod[Q, bool]
AccessOther psql.WhereMod[Q, bool]
Comments psql.WhereMod[Q, string]
IsReporterConfidential psql.WhereMod[Q, bool]
IsReporterOwner psql.WhereMod[Q, bool]
HasAdult psql.WhereMod[Q, bool]
HasBackyardPermission psql.WhereMod[Q, bool]
HasLarvae psql.WhereMod[Q, bool]
HasPupae psql.WhereMod[Q, bool]
OwnerEmail psql.WhereMod[Q, string]
OwnerName psql.WhereMod[Q, string]
OwnerPhone psql.WhereMod[Q, string]
ReportID psql.WhereMod[Q, int32]
Duration psql.WhereMod[Q, enums.PublicreportNuisancedurationtype]
}
func (publicreportWaterWhere[Q]) AliasedAs(alias string) publicreportWaterWhere[Q] {
return buildPublicreportWaterWhere[Q](buildPublicreportWaterColumns(alias))
}
func buildPublicreportWaterWhere[Q psql.Filterable](cols publicreportWaterColumns) publicreportWaterWhere[Q] {
return publicreportWaterWhere[Q]{
AccessComments: psql.Where[Q, string](cols.AccessComments),
AccessGate: psql.Where[Q, bool](cols.AccessGate),
AccessFence: psql.Where[Q, bool](cols.AccessFence),
AccessLocked: psql.Where[Q, bool](cols.AccessLocked),
AccessDog: psql.Where[Q, bool](cols.AccessDog),
AccessOther: psql.Where[Q, bool](cols.AccessOther),
Comments: psql.Where[Q, string](cols.Comments),
IsReporterConfidential: psql.Where[Q, bool](cols.IsReporterConfidential),
IsReporterOwner: psql.Where[Q, bool](cols.IsReporterOwner),
HasAdult: psql.Where[Q, bool](cols.HasAdult),
HasBackyardPermission: psql.Where[Q, bool](cols.HasBackyardPermission),
HasLarvae: psql.Where[Q, bool](cols.HasLarvae),
HasPupae: psql.Where[Q, bool](cols.HasPupae),
OwnerEmail: psql.Where[Q, string](cols.OwnerEmail),
OwnerName: psql.Where[Q, string](cols.OwnerName),
OwnerPhone: psql.Where[Q, string](cols.OwnerPhone),
ReportID: psql.Where[Q, int32](cols.ReportID),
Duration: psql.Where[Q, enums.PublicreportNuisancedurationtype](cols.Duration),
}
}
func (o *PublicreportWater) Preload(name string, retrieved any) error {
if o == nil {
return nil
}
switch name {
case "Report":
rel, ok := retrieved.(*PublicreportReport)
if !ok {
return fmt.Errorf("publicreportWater cannot load %T as %q", retrieved, name)
}
o.R.Report = rel
if rel != nil {
rel.R.Water = o
}
return nil
default:
return fmt.Errorf("publicreportWater has no relationship %q", name)
}
}
type publicreportWaterPreloader struct {
Report func(...psql.PreloadOption) psql.Preloader
}
func buildPublicreportWaterPreloader() publicreportWaterPreloader {
return publicreportWaterPreloader{
Report: func(opts ...psql.PreloadOption) psql.Preloader {
return psql.Preload[*PublicreportReport, PublicreportReportSlice](psql.PreloadRel{
Name: "Report",
Sides: []psql.PreloadSide{
{
From: PublicreportWaters,
To: PublicreportReports,
FromColumns: []string{"report_id"},
ToColumns: []string{"id"},
},
},
}, PublicreportReports.Columns.Names(), opts...)
},
}
}
type publicreportWaterThenLoader[Q orm.Loadable] struct {
Report func(...bob.Mod[*dialect.SelectQuery]) orm.Loader[Q]
}
func buildPublicreportWaterThenLoader[Q orm.Loadable]() publicreportWaterThenLoader[Q] {
type ReportLoadInterface interface {
LoadReport(context.Context, bob.Executor, ...bob.Mod[*dialect.SelectQuery]) error
}
return publicreportWaterThenLoader[Q]{
Report: thenLoadBuilder[Q](
"Report",
func(ctx context.Context, exec bob.Executor, retrieved ReportLoadInterface, mods ...bob.Mod[*dialect.SelectQuery]) error {
return retrieved.LoadReport(ctx, exec, mods...)
},
),
}
}
// LoadReport loads the publicreportWater's Report into the .R struct
func (o *PublicreportWater) LoadReport(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
if o == nil {
return nil
}
// Reset the relationship
o.R.Report = nil
related, err := o.Report(mods...).One(ctx, exec)
if err != nil {
return err
}
related.R.Water = o
o.R.Report = related
return nil
}
// LoadReport loads the publicreportWater's Report into the .R struct
func (os PublicreportWaterSlice) LoadReport(ctx context.Context, exec bob.Executor, mods ...bob.Mod[*dialect.SelectQuery]) error {
if len(os) == 0 {
return nil
}
publicreportReports, err := os.Report(mods...).All(ctx, exec)
if err != nil {
return err
}
for _, o := range os {
if o == nil {
continue
}
for _, rel := range publicreportReports {
if !(o.ReportID == rel.ID) {
continue
}
rel.R.Water = o
o.R.Report = rel
break
}
}
return nil
}