Add resolution for tracking review_task discards

This commit is contained in:
Eli Ribble 2026-03-11 22:49:00 +00:00
parent 3ccc05d4c5
commit 10b4bf929f
No known key found for this signature in database
9 changed files with 210 additions and 50 deletions

View file

@ -69,8 +69,8 @@ var Features = Table[
Generated: false, Generated: false,
AutoIncr: false, AutoIncr: false,
}, },
Geometry: column{ Location: column{
Name: "geometry", Name: "location",
DBType: "geometry", DBType: "geometry",
Default: "NULL", Default: "NULL",
Comment: "", Comment: "",
@ -143,12 +143,12 @@ type featureColumns struct {
OrganizationID column OrganizationID column
SiteID column SiteID column
SiteVersion column SiteVersion column
Geometry 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.Geometry, c.Created, c.CreatorID, c.ID, c.OrganizationID, c.SiteID, c.SiteVersion, c.Location,
} }
} }

View file

@ -69,6 +69,15 @@ var ReviewTasks = Table[
Generated: false, Generated: false,
AutoIncr: false, AutoIncr: false,
}, },
Resolution: column{
Name: "resolution",
DBType: "public.reviewtaskresolutiontype",
Default: "NULL",
Comment: "",
Nullable: true,
Generated: false,
AutoIncr: false,
},
}, },
Indexes: reviewTaskIndexes{ Indexes: reviewTaskIndexes{
ReviewTaskPkey: index{ ReviewTaskPkey: index{
@ -134,11 +143,12 @@ type reviewTaskColumns struct {
OrganizationID column OrganizationID column
Reviewed column Reviewed column
ReviewerID column ReviewerID column
Resolution column
} }
func (c reviewTaskColumns) AsSlice() []column { func (c reviewTaskColumns) AsSlice() []column {
return []column{ return []column{
c.Created, c.CreatorID, c.ID, c.OrganizationID, c.Reviewed, c.ReviewerID, c.Created, c.CreatorID, c.ID, c.OrganizationID, c.Reviewed, c.ReviewerID, c.Resolution,
} }
} }

View file

@ -51,6 +51,15 @@ var ReviewTaskPools = Table[
Generated: false, Generated: false,
AutoIncr: false, AutoIncr: false,
}, },
Condition: column{
Name: "condition",
DBType: "public.poolconditiontype",
Default: "NULL",
Comment: "",
Nullable: true,
Generated: false,
AutoIncr: false,
},
}, },
Indexes: reviewTaskPoolIndexes{ Indexes: reviewTaskPoolIndexes{
ReviewTaskPoolPkey: index{ ReviewTaskPoolPkey: index{
@ -105,11 +114,12 @@ type reviewTaskPoolColumns struct {
Location column Location column
Geometry column Geometry column
ReviewTaskID column ReviewTaskID column
Condition column
} }
func (c reviewTaskPoolColumns) AsSlice() []column { func (c reviewTaskPoolColumns) AsSlice() []column {
return []column{ return []column{
c.FeaturePoolID, c.Location, c.Geometry, c.ReviewTaskID, c.FeaturePoolID, c.Location, c.Geometry, c.ReviewTaskID, c.Condition,
} }
} }

View file

@ -1945,6 +1945,79 @@ func (e *PublicreportReportstatustype) Scan(value any) error {
return nil return nil
} }
// Enum values for Reviewtaskresolutiontype
const (
ReviewtaskresolutiontypeCommitted Reviewtaskresolutiontype = "committed"
ReviewtaskresolutiontypeDiscarded Reviewtaskresolutiontype = "discarded"
)
func AllReviewtaskresolutiontype() []Reviewtaskresolutiontype {
return []Reviewtaskresolutiontype{
ReviewtaskresolutiontypeCommitted,
ReviewtaskresolutiontypeDiscarded,
}
}
type Reviewtaskresolutiontype string
func (e Reviewtaskresolutiontype) String() string {
return string(e)
}
func (e Reviewtaskresolutiontype) Valid() bool {
switch e {
case ReviewtaskresolutiontypeCommitted,
ReviewtaskresolutiontypeDiscarded:
return true
default:
return false
}
}
// useful when testing in other packages
func (e Reviewtaskresolutiontype) All() []Reviewtaskresolutiontype {
return AllReviewtaskresolutiontype()
}
func (e Reviewtaskresolutiontype) MarshalText() ([]byte, error) {
return []byte(e), nil
}
func (e *Reviewtaskresolutiontype) UnmarshalText(text []byte) error {
return e.Scan(text)
}
func (e Reviewtaskresolutiontype) MarshalBinary() ([]byte, error) {
return []byte(e), nil
}
func (e *Reviewtaskresolutiontype) UnmarshalBinary(data []byte) error {
return e.Scan(data)
}
func (e Reviewtaskresolutiontype) Value() (driver.Value, error) {
return string(e), nil
}
func (e *Reviewtaskresolutiontype) Scan(value any) error {
switch x := value.(type) {
case string:
*e = Reviewtaskresolutiontype(x)
case []byte:
*e = Reviewtaskresolutiontype(x)
case nil:
return fmt.Errorf("cannot nil into Reviewtaskresolutiontype")
default:
return fmt.Errorf("cannot scan type %T: %v", value, value)
}
if !e.Valid() {
return fmt.Errorf("invalid Reviewtaskresolutiontype value: %s", *e)
}
return nil
}
// Enum values for Signaltype // Enum values for Signaltype
const ( const (
SignaltypeFlyoverPool Signaltype = "flyover pool" SignaltypeFlyoverPool Signaltype = "flyover pool"

View file

@ -0,0 +1,11 @@
-- +goose Up
ALTER TABLE review_task_pool ADD COLUMN condition PoolConditionType;
CREATE TYPE ReviewTaskResolutionType AS ENUM (
'committed',
'discarded'
);
ALTER TABLE review_task ADD COLUMN resolution ReviewTaskResolutionType;
-- +goose Down
ALTER TABLE review_task DROP COLUMN resolution;
DROP TYPE ReviewTaskResolutionType
ALTER TABLE review_task_pool DROP COLUMN condition;

View file

@ -0,0 +1,4 @@
-- +goose Up
ALTER TABLE feature RENAME COLUMN geometry TO location;
-- +goose Down
ALTER TABLE feature RENAME COLUMN location TO geometry;

View file

@ -31,7 +31,7 @@ type Feature struct {
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" ` SiteVersion int32 `db:"site_version" `
Geometry null.Val[string] `db:"geometry" ` Location null.Val[string] `db:"location" `
R featureR `db:"-" ` R featureR `db:"-" `
} }
@ -57,7 +57,7 @@ type featureR struct {
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", "geometry", "created", "creator_id", "id", "organization_id", "site_id", "site_version", "location",
).WithParent("feature"), ).WithParent("feature"),
tableAlias: alias, tableAlias: alias,
Created: psql.Quote(alias, "created"), Created: psql.Quote(alias, "created"),
@ -66,7 +66,7 @@ func buildFeatureColumns(alias string) featureColumns {
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"), SiteVersion: psql.Quote(alias, "site_version"),
Geometry: psql.Quote(alias, "geometry"), Location: psql.Quote(alias, "location"),
} }
} }
@ -79,7 +79,7 @@ type featureColumns struct {
OrganizationID psql.Expression OrganizationID psql.Expression
SiteID psql.Expression SiteID psql.Expression
SiteVersion psql.Expression SiteVersion psql.Expression
Geometry psql.Expression Location psql.Expression
} }
func (c featureColumns) Alias() string { func (c featureColumns) Alias() string {
@ -100,7 +100,7 @@ type FeatureSetter struct {
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" ` SiteVersion omit.Val[int32] `db:"site_version" `
Geometry omitnull.Val[string] `db:"geometry" ` Location omitnull.Val[string] `db:"location" `
} }
func (s FeatureSetter) SetColumns() []string { func (s FeatureSetter) SetColumns() []string {
@ -123,8 +123,8 @@ func (s FeatureSetter) SetColumns() []string {
if s.SiteVersion.IsValue() { if s.SiteVersion.IsValue() {
vals = append(vals, "site_version") vals = append(vals, "site_version")
} }
if !s.Geometry.IsUnset() { if !s.Location.IsUnset() {
vals = append(vals, "geometry") vals = append(vals, "location")
} }
return vals return vals
} }
@ -148,8 +148,8 @@ func (s FeatureSetter) Overwrite(t *Feature) {
if s.SiteVersion.IsValue() { if s.SiteVersion.IsValue() {
t.SiteVersion = s.SiteVersion.MustGet() t.SiteVersion = s.SiteVersion.MustGet()
} }
if !s.Geometry.IsUnset() { if !s.Location.IsUnset() {
t.Geometry = s.Geometry.MustGetNull() t.Location = s.Location.MustGetNull()
} }
} }
@ -196,8 +196,8 @@ func (s *FeatureSetter) Apply(q *dialect.InsertQuery) {
vals[5] = psql.Raw("DEFAULT") vals[5] = psql.Raw("DEFAULT")
} }
if !s.Geometry.IsUnset() { if !s.Location.IsUnset() {
vals[6] = psql.Arg(s.Geometry.MustGetNull()) vals[6] = psql.Arg(s.Location.MustGetNull())
} else { } else {
vals[6] = psql.Raw("DEFAULT") vals[6] = psql.Raw("DEFAULT")
} }
@ -255,10 +255,10 @@ func (s FeatureSetter) Expressions(prefix ...string) []bob.Expression {
}}) }})
} }
if !s.Geometry.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, "geometry")...), psql.Quote(append(prefix, "location")...),
psql.Arg(s.Geometry), psql.Arg(s.Location),
}}) }})
} }
@ -794,7 +794,7 @@ type featureWhere[Q psql.Filterable] struct {
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] SiteVersion psql.WhereMod[Q, int32]
Geometry psql.WhereNullMod[Q, string] Location psql.WhereNullMod[Q, string]
} }
func (featureWhere[Q]) AliasedAs(alias string) featureWhere[Q] { func (featureWhere[Q]) AliasedAs(alias string) featureWhere[Q] {
@ -809,7 +809,7 @@ func buildFeatureWhere[Q psql.Filterable](cols featureColumns) featureWhere[Q] {
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), SiteVersion: psql.Where[Q, int32](cols.SiteVersion),
Geometry: psql.WhereNull[Q, string](cols.Geometry), Location: psql.WhereNull[Q, string](cols.Location),
} }
} }

View file

@ -18,6 +18,7 @@ import (
"github.com/Gleipnir-Technology/bob/expr" "github.com/Gleipnir-Technology/bob/expr"
"github.com/Gleipnir-Technology/bob/orm" "github.com/Gleipnir-Technology/bob/orm"
"github.com/Gleipnir-Technology/bob/types/pgtypes" "github.com/Gleipnir-Technology/bob/types/pgtypes"
enums "github.com/Gleipnir-Technology/nidus-sync/db/enums"
"github.com/aarondl/opt/null" "github.com/aarondl/opt/null"
"github.com/aarondl/opt/omit" "github.com/aarondl/opt/omit"
"github.com/aarondl/opt/omitnull" "github.com/aarondl/opt/omitnull"
@ -25,12 +26,13 @@ import (
// ReviewTask is an object representing the database table. // ReviewTask is an object representing the database table.
type ReviewTask struct { type ReviewTask struct {
Created time.Time `db:"created" ` Created time.Time `db:"created" `
CreatorID null.Val[int32] `db:"creator_id" ` CreatorID null.Val[int32] `db:"creator_id" `
ID int32 `db:"id,pk" ` ID int32 `db:"id,pk" `
OrganizationID int32 `db:"organization_id" ` OrganizationID int32 `db:"organization_id" `
Reviewed null.Val[time.Time] `db:"reviewed" ` Reviewed null.Val[time.Time] `db:"reviewed" `
ReviewerID null.Val[int32] `db:"reviewer_id" ` ReviewerID null.Val[int32] `db:"reviewer_id" `
Resolution null.Val[enums.Reviewtaskresolutiontype] `db:"resolution" `
R reviewTaskR `db:"-" ` R reviewTaskR `db:"-" `
} }
@ -56,7 +58,7 @@ type reviewTaskR struct {
func buildReviewTaskColumns(alias string) reviewTaskColumns { func buildReviewTaskColumns(alias string) reviewTaskColumns {
return reviewTaskColumns{ return reviewTaskColumns{
ColumnsExpr: expr.NewColumnsExpr( ColumnsExpr: expr.NewColumnsExpr(
"created", "creator_id", "id", "organization_id", "reviewed", "reviewer_id", "created", "creator_id", "id", "organization_id", "reviewed", "reviewer_id", "resolution",
).WithParent("review_task"), ).WithParent("review_task"),
tableAlias: alias, tableAlias: alias,
Created: psql.Quote(alias, "created"), Created: psql.Quote(alias, "created"),
@ -65,6 +67,7 @@ func buildReviewTaskColumns(alias string) reviewTaskColumns {
OrganizationID: psql.Quote(alias, "organization_id"), OrganizationID: psql.Quote(alias, "organization_id"),
Reviewed: psql.Quote(alias, "reviewed"), Reviewed: psql.Quote(alias, "reviewed"),
ReviewerID: psql.Quote(alias, "reviewer_id"), ReviewerID: psql.Quote(alias, "reviewer_id"),
Resolution: psql.Quote(alias, "resolution"),
} }
} }
@ -77,6 +80,7 @@ type reviewTaskColumns struct {
OrganizationID psql.Expression OrganizationID psql.Expression
Reviewed psql.Expression Reviewed psql.Expression
ReviewerID psql.Expression ReviewerID psql.Expression
Resolution psql.Expression
} }
func (c reviewTaskColumns) Alias() string { func (c reviewTaskColumns) Alias() string {
@ -91,16 +95,17 @@ func (reviewTaskColumns) AliasedAs(alias string) reviewTaskColumns {
// All values are optional, and do not have to be set // All values are optional, and do not have to be set
// Generated columns are not included // Generated columns are not included
type ReviewTaskSetter struct { type ReviewTaskSetter struct {
Created omit.Val[time.Time] `db:"created" ` Created omit.Val[time.Time] `db:"created" `
CreatorID omitnull.Val[int32] `db:"creator_id" ` CreatorID omitnull.Val[int32] `db:"creator_id" `
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" `
Reviewed omitnull.Val[time.Time] `db:"reviewed" ` Reviewed omitnull.Val[time.Time] `db:"reviewed" `
ReviewerID omitnull.Val[int32] `db:"reviewer_id" ` ReviewerID omitnull.Val[int32] `db:"reviewer_id" `
Resolution omitnull.Val[enums.Reviewtaskresolutiontype] `db:"resolution" `
} }
func (s ReviewTaskSetter) SetColumns() []string { func (s ReviewTaskSetter) SetColumns() []string {
vals := make([]string, 0, 6) vals := make([]string, 0, 7)
if s.Created.IsValue() { if s.Created.IsValue() {
vals = append(vals, "created") vals = append(vals, "created")
} }
@ -119,6 +124,9 @@ func (s ReviewTaskSetter) SetColumns() []string {
if !s.ReviewerID.IsUnset() { if !s.ReviewerID.IsUnset() {
vals = append(vals, "reviewer_id") vals = append(vals, "reviewer_id")
} }
if !s.Resolution.IsUnset() {
vals = append(vals, "resolution")
}
return vals return vals
} }
@ -141,6 +149,9 @@ func (s ReviewTaskSetter) Overwrite(t *ReviewTask) {
if !s.ReviewerID.IsUnset() { if !s.ReviewerID.IsUnset() {
t.ReviewerID = s.ReviewerID.MustGetNull() t.ReviewerID = s.ReviewerID.MustGetNull()
} }
if !s.Resolution.IsUnset() {
t.Resolution = s.Resolution.MustGetNull()
}
} }
func (s *ReviewTaskSetter) Apply(q *dialect.InsertQuery) { func (s *ReviewTaskSetter) Apply(q *dialect.InsertQuery) {
@ -149,7 +160,7 @@ func (s *ReviewTaskSetter) 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, 6) vals := make([]bob.Expression, 7)
if s.Created.IsValue() { if s.Created.IsValue() {
vals[0] = psql.Arg(s.Created.MustGet()) vals[0] = psql.Arg(s.Created.MustGet())
} else { } else {
@ -186,6 +197,12 @@ func (s *ReviewTaskSetter) Apply(q *dialect.InsertQuery) {
vals[5] = psql.Raw("DEFAULT") vals[5] = psql.Raw("DEFAULT")
} }
if !s.Resolution.IsUnset() {
vals[6] = psql.Arg(s.Resolution.MustGetNull())
} else {
vals[6] = psql.Raw("DEFAULT")
}
return bob.ExpressSlice(ctx, w, d, start, vals, "", ", ", "") return bob.ExpressSlice(ctx, w, d, start, vals, "", ", ", "")
})) }))
} }
@ -195,7 +212,7 @@ func (s ReviewTaskSetter) UpdateMod() bob.Mod[*dialect.UpdateQuery] {
} }
func (s ReviewTaskSetter) Expressions(prefix ...string) []bob.Expression { func (s ReviewTaskSetter) Expressions(prefix ...string) []bob.Expression {
exprs := make([]bob.Expression, 0, 6) exprs := make([]bob.Expression, 0, 7)
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{
@ -239,6 +256,13 @@ func (s ReviewTaskSetter) Expressions(prefix ...string) []bob.Expression {
}}) }})
} }
if !s.Resolution.IsUnset() {
exprs = append(exprs, expr.Join{Sep: " = ", Exprs: []bob.Expression{
psql.Quote(append(prefix, "resolution")...),
psql.Arg(s.Resolution),
}})
}
return exprs return exprs
} }
@ -766,6 +790,7 @@ type reviewTaskWhere[Q psql.Filterable] struct {
OrganizationID psql.WhereMod[Q, int32] OrganizationID psql.WhereMod[Q, int32]
Reviewed psql.WhereNullMod[Q, time.Time] Reviewed psql.WhereNullMod[Q, time.Time]
ReviewerID psql.WhereNullMod[Q, int32] ReviewerID psql.WhereNullMod[Q, int32]
Resolution psql.WhereNullMod[Q, enums.Reviewtaskresolutiontype]
} }
func (reviewTaskWhere[Q]) AliasedAs(alias string) reviewTaskWhere[Q] { func (reviewTaskWhere[Q]) AliasedAs(alias string) reviewTaskWhere[Q] {
@ -780,6 +805,7 @@ func buildReviewTaskWhere[Q psql.Filterable](cols reviewTaskColumns) reviewTaskW
OrganizationID: psql.Where[Q, int32](cols.OrganizationID), OrganizationID: psql.Where[Q, int32](cols.OrganizationID),
Reviewed: psql.WhereNull[Q, time.Time](cols.Reviewed), Reviewed: psql.WhereNull[Q, time.Time](cols.Reviewed),
ReviewerID: psql.WhereNull[Q, int32](cols.ReviewerID), ReviewerID: psql.WhereNull[Q, int32](cols.ReviewerID),
Resolution: psql.WhereNull[Q, enums.Reviewtaskresolutiontype](cols.Resolution),
} }
} }

View file

@ -17,6 +17,7 @@ import (
"github.com/Gleipnir-Technology/bob/expr" "github.com/Gleipnir-Technology/bob/expr"
"github.com/Gleipnir-Technology/bob/orm" "github.com/Gleipnir-Technology/bob/orm"
"github.com/Gleipnir-Technology/bob/types/pgtypes" "github.com/Gleipnir-Technology/bob/types/pgtypes"
enums "github.com/Gleipnir-Technology/nidus-sync/db/enums"
"github.com/aarondl/opt/null" "github.com/aarondl/opt/null"
"github.com/aarondl/opt/omit" "github.com/aarondl/opt/omit"
"github.com/aarondl/opt/omitnull" "github.com/aarondl/opt/omitnull"
@ -24,10 +25,11 @@ import (
// ReviewTaskPool is an object representing the database table. // ReviewTaskPool is an object representing the database table.
type ReviewTaskPool struct { type ReviewTaskPool struct {
FeaturePoolID int32 `db:"feature_pool_id" ` FeaturePoolID int32 `db:"feature_pool_id" `
Location null.Val[string] `db:"location" ` Location null.Val[string] `db:"location" `
Geometry null.Val[string] `db:"geometry" ` Geometry null.Val[string] `db:"geometry" `
ReviewTaskID int32 `db:"review_task_id,pk" ` ReviewTaskID int32 `db:"review_task_id,pk" `
Condition null.Val[enums.Poolconditiontype] `db:"condition" `
R reviewTaskPoolR `db:"-" ` R reviewTaskPoolR `db:"-" `
} }
@ -51,13 +53,14 @@ type reviewTaskPoolR struct {
func buildReviewTaskPoolColumns(alias string) reviewTaskPoolColumns { func buildReviewTaskPoolColumns(alias string) reviewTaskPoolColumns {
return reviewTaskPoolColumns{ return reviewTaskPoolColumns{
ColumnsExpr: expr.NewColumnsExpr( ColumnsExpr: expr.NewColumnsExpr(
"feature_pool_id", "location", "geometry", "review_task_id", "feature_pool_id", "location", "geometry", "review_task_id", "condition",
).WithParent("review_task_pool"), ).WithParent("review_task_pool"),
tableAlias: alias, tableAlias: alias,
FeaturePoolID: psql.Quote(alias, "feature_pool_id"), FeaturePoolID: psql.Quote(alias, "feature_pool_id"),
Location: psql.Quote(alias, "location"), Location: psql.Quote(alias, "location"),
Geometry: psql.Quote(alias, "geometry"), Geometry: psql.Quote(alias, "geometry"),
ReviewTaskID: psql.Quote(alias, "review_task_id"), ReviewTaskID: psql.Quote(alias, "review_task_id"),
Condition: psql.Quote(alias, "condition"),
} }
} }
@ -68,6 +71,7 @@ type reviewTaskPoolColumns struct {
Location psql.Expression Location psql.Expression
Geometry psql.Expression Geometry psql.Expression
ReviewTaskID psql.Expression ReviewTaskID psql.Expression
Condition psql.Expression
} }
func (c reviewTaskPoolColumns) Alias() string { func (c reviewTaskPoolColumns) Alias() string {
@ -82,14 +86,15 @@ func (reviewTaskPoolColumns) AliasedAs(alias string) reviewTaskPoolColumns {
// All values are optional, and do not have to be set // All values are optional, and do not have to be set
// Generated columns are not included // Generated columns are not included
type ReviewTaskPoolSetter struct { type ReviewTaskPoolSetter struct {
FeaturePoolID omit.Val[int32] `db:"feature_pool_id" ` FeaturePoolID omit.Val[int32] `db:"feature_pool_id" `
Location omitnull.Val[string] `db:"location" ` Location omitnull.Val[string] `db:"location" `
Geometry omitnull.Val[string] `db:"geometry" ` Geometry omitnull.Val[string] `db:"geometry" `
ReviewTaskID omit.Val[int32] `db:"review_task_id,pk" ` ReviewTaskID omit.Val[int32] `db:"review_task_id,pk" `
Condition omitnull.Val[enums.Poolconditiontype] `db:"condition" `
} }
func (s ReviewTaskPoolSetter) SetColumns() []string { func (s ReviewTaskPoolSetter) SetColumns() []string {
vals := make([]string, 0, 4) vals := make([]string, 0, 5)
if s.FeaturePoolID.IsValue() { if s.FeaturePoolID.IsValue() {
vals = append(vals, "feature_pool_id") vals = append(vals, "feature_pool_id")
} }
@ -102,6 +107,9 @@ func (s ReviewTaskPoolSetter) SetColumns() []string {
if s.ReviewTaskID.IsValue() { if s.ReviewTaskID.IsValue() {
vals = append(vals, "review_task_id") vals = append(vals, "review_task_id")
} }
if !s.Condition.IsUnset() {
vals = append(vals, "condition")
}
return vals return vals
} }
@ -118,6 +126,9 @@ func (s ReviewTaskPoolSetter) Overwrite(t *ReviewTaskPool) {
if s.ReviewTaskID.IsValue() { if s.ReviewTaskID.IsValue() {
t.ReviewTaskID = s.ReviewTaskID.MustGet() t.ReviewTaskID = s.ReviewTaskID.MustGet()
} }
if !s.Condition.IsUnset() {
t.Condition = s.Condition.MustGetNull()
}
} }
func (s *ReviewTaskPoolSetter) Apply(q *dialect.InsertQuery) { func (s *ReviewTaskPoolSetter) Apply(q *dialect.InsertQuery) {
@ -126,7 +137,7 @@ func (s *ReviewTaskPoolSetter) 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, 4) vals := make([]bob.Expression, 5)
if s.FeaturePoolID.IsValue() { if s.FeaturePoolID.IsValue() {
vals[0] = psql.Arg(s.FeaturePoolID.MustGet()) vals[0] = psql.Arg(s.FeaturePoolID.MustGet())
} else { } else {
@ -151,6 +162,12 @@ func (s *ReviewTaskPoolSetter) Apply(q *dialect.InsertQuery) {
vals[3] = psql.Raw("DEFAULT") vals[3] = psql.Raw("DEFAULT")
} }
if !s.Condition.IsUnset() {
vals[4] = psql.Arg(s.Condition.MustGetNull())
} else {
vals[4] = psql.Raw("DEFAULT")
}
return bob.ExpressSlice(ctx, w, d, start, vals, "", ", ", "") return bob.ExpressSlice(ctx, w, d, start, vals, "", ", ", "")
})) }))
} }
@ -160,7 +177,7 @@ func (s ReviewTaskPoolSetter) UpdateMod() bob.Mod[*dialect.UpdateQuery] {
} }
func (s ReviewTaskPoolSetter) Expressions(prefix ...string) []bob.Expression { func (s ReviewTaskPoolSetter) Expressions(prefix ...string) []bob.Expression {
exprs := make([]bob.Expression, 0, 4) exprs := make([]bob.Expression, 0, 5)
if s.FeaturePoolID.IsValue() { if s.FeaturePoolID.IsValue() {
exprs = append(exprs, expr.Join{Sep: " = ", Exprs: []bob.Expression{ exprs = append(exprs, expr.Join{Sep: " = ", Exprs: []bob.Expression{
@ -190,6 +207,13 @@ func (s ReviewTaskPoolSetter) Expressions(prefix ...string) []bob.Expression {
}}) }})
} }
if !s.Condition.IsUnset() {
exprs = append(exprs, expr.Join{Sep: " = ", Exprs: []bob.Expression{
psql.Quote(append(prefix, "condition")...),
psql.Arg(s.Condition),
}})
}
return exprs return exprs
} }
@ -565,6 +589,7 @@ type reviewTaskPoolWhere[Q psql.Filterable] struct {
Location psql.WhereNullMod[Q, string] Location psql.WhereNullMod[Q, string]
Geometry psql.WhereNullMod[Q, string] Geometry psql.WhereNullMod[Q, string]
ReviewTaskID psql.WhereMod[Q, int32] ReviewTaskID psql.WhereMod[Q, int32]
Condition psql.WhereNullMod[Q, enums.Poolconditiontype]
} }
func (reviewTaskPoolWhere[Q]) AliasedAs(alias string) reviewTaskPoolWhere[Q] { func (reviewTaskPoolWhere[Q]) AliasedAs(alias string) reviewTaskPoolWhere[Q] {
@ -577,6 +602,7 @@ func buildReviewTaskPoolWhere[Q psql.Filterable](cols reviewTaskPoolColumns) rev
Location: psql.WhereNull[Q, string](cols.Location), Location: psql.WhereNull[Q, string](cols.Location),
Geometry: psql.WhereNull[Q, string](cols.Geometry), Geometry: psql.WhereNull[Q, string](cols.Geometry),
ReviewTaskID: psql.Where[Q, int32](cols.ReviewTaskID), ReviewTaskID: psql.Where[Q, int32](cols.ReviewTaskID),
Condition: psql.WhereNull[Q, enums.Poolconditiontype](cols.Condition),
} }
} }