Add district setting page and display of district boundary

This commit is contained in:
Eli Ribble 2026-02-16 15:03:26 +00:00
parent 4c8da3b96a
commit a1cc2dbaff
No known key found for this signature in database
11 changed files with 648 additions and 168 deletions

View file

@ -222,6 +222,24 @@ var ImportDistricts = Table[
Generated: true,
AutoIncr: false,
},
Centroid4326: column{
Name: "centroid_4326",
DBType: "geometry",
Default: "GENERATED",
Comment: "",
Nullable: true,
Generated: true,
AutoIncr: false,
},
Extent4326: column{
Name: "extent_4326",
DBType: "geometry",
Default: "GENERATED",
Comment: "",
Nullable: true,
Generated: true,
AutoIncr: false,
},
},
Indexes: importDistrictIndexes{
DistrictPkey: index{
@ -269,34 +287,36 @@ var ImportDistricts = Table[
}
type importDistrictColumns struct {
Gid column
ID column
Website column
Contact column
Address column
Regionid column
PostalCod column
Phone1 column
Fax1 column
Agency column
Code1 column
City1 column
ShapeLeng column
Address2 column
GeneralMG column
City2 column
PostalC1 column
Fax2 column
Phone2 column
ShapeLe1 column
ShapeArea column
Geom column
Geom4326 column
Gid column
ID column
Website column
Contact column
Address column
Regionid column
PostalCod column
Phone1 column
Fax1 column
Agency column
Code1 column
City1 column
ShapeLeng column
Address2 column
GeneralMG column
City2 column
PostalC1 column
Fax2 column
Phone2 column
ShapeLe1 column
ShapeArea column
Geom column
Geom4326 column
Centroid4326 column
Extent4326 column
}
func (c importDistrictColumns) AsSlice() []column {
return []column{
c.Gid, c.ID, c.Website, c.Contact, c.Address, c.Regionid, c.PostalCod, c.Phone1, c.Fax1, c.Agency, c.Code1, c.City1, c.ShapeLeng, c.Address2, c.GeneralMG, c.City2, c.PostalC1, c.Fax2, c.Phone2, c.ShapeLe1, c.ShapeArea, c.Geom, c.Geom4326,
c.Gid, c.ID, c.Website, c.Contact, c.Address, c.Regionid, c.PostalCod, c.Phone1, c.Fax1, c.Agency, c.Code1, c.City1, c.ShapeLeng, c.Address2, c.GeneralMG, c.City2, c.PostalC1, c.Fax2, c.Phone2, c.ShapeLe1, c.ShapeArea, c.Geom, c.Geom4326, c.Centroid4326, c.Extent4326,
}
}

View file

@ -2622,6 +2622,8 @@ func (f *Factory) FromExistingImportDistrict(m *models.ImportDistrict) *ImportDi
o.ShapeArea = func() null.Val[decimal.Decimal] { return m.ShapeArea }
o.Geom = func() null.Val[string] { return m.Geom }
o.Geom4326 = func() null.Val[string] { return m.Geom4326 }
o.Centroid4326 = func() null.Val[string] { return m.Centroid4326 }
o.Extent4326 = func() null.Val[string] { return m.Extent4326 }
ctx := context.Background()
if m.R.ImportDistrictGidOrganization != nil {

View file

@ -37,29 +37,31 @@ func (mods ImportDistrictModSlice) Apply(ctx context.Context, n *ImportDistrictT
// ImportDistrictTemplate is an object representing the database table.
// all columns are optional and should be set by mods
type ImportDistrictTemplate struct {
Gid func() int32
ID func() null.Val[decimal.Decimal]
Website func() null.Val[string]
Contact func() null.Val[string]
Address func() null.Val[string]
Regionid func() null.Val[decimal.Decimal]
PostalCod func() null.Val[decimal.Decimal]
Phone1 func() null.Val[string]
Fax1 func() null.Val[string]
Agency func() null.Val[string]
Code1 func() null.Val[string]
City1 func() null.Val[string]
ShapeLeng func() null.Val[decimal.Decimal]
Address2 func() null.Val[string]
GeneralMG func() null.Val[string]
City2 func() null.Val[string]
PostalC1 func() null.Val[decimal.Decimal]
Fax2 func() null.Val[string]
Phone2 func() null.Val[string]
ShapeLe1 func() null.Val[decimal.Decimal]
ShapeArea func() null.Val[decimal.Decimal]
Geom func() null.Val[string]
Geom4326 func() null.Val[string]
Gid func() int32
ID func() null.Val[decimal.Decimal]
Website func() null.Val[string]
Contact func() null.Val[string]
Address func() null.Val[string]
Regionid func() null.Val[decimal.Decimal]
PostalCod func() null.Val[decimal.Decimal]
Phone1 func() null.Val[string]
Fax1 func() null.Val[string]
Agency func() null.Val[string]
Code1 func() null.Val[string]
City1 func() null.Val[string]
ShapeLeng func() null.Val[decimal.Decimal]
Address2 func() null.Val[string]
GeneralMG func() null.Val[string]
City2 func() null.Val[string]
PostalC1 func() null.Val[decimal.Decimal]
Fax2 func() null.Val[string]
Phone2 func() null.Val[string]
ShapeLe1 func() null.Val[decimal.Decimal]
ShapeArea func() null.Val[decimal.Decimal]
Geom func() null.Val[string]
Geom4326 func() null.Val[string]
Centroid4326 func() null.Val[string]
Extent4326 func() null.Val[string]
r importDistrictR
f *Factory
@ -277,6 +279,12 @@ func (o ImportDistrictTemplate) Build() *models.ImportDistrict {
if o.Geom4326 != nil {
m.Geom4326 = o.Geom4326()
}
if o.Centroid4326 != nil {
m.Centroid4326 = o.Centroid4326()
}
if o.Extent4326 != nil {
m.Extent4326 = o.Extent4326()
}
o.setModelRels(m)
@ -439,6 +447,8 @@ func (m importDistrictMods) RandomizeAllColumns(f *faker.Faker) ImportDistrictMo
ImportDistrictMods.RandomShapeArea(f),
ImportDistrictMods.RandomGeom(f),
ImportDistrictMods.RandomGeom4326(f),
ImportDistrictMods.RandomCentroid4326(f),
ImportDistrictMods.RandomExtent4326(f),
}
}
@ -1639,6 +1649,112 @@ func (m importDistrictMods) RandomGeom4326NotNull(f *faker.Faker) ImportDistrict
})
}
// Set the model columns to this value
func (m importDistrictMods) Centroid4326(val null.Val[string]) ImportDistrictMod {
return ImportDistrictModFunc(func(_ context.Context, o *ImportDistrictTemplate) {
o.Centroid4326 = func() null.Val[string] { return val }
})
}
// Set the Column from the function
func (m importDistrictMods) Centroid4326Func(f func() null.Val[string]) ImportDistrictMod {
return ImportDistrictModFunc(func(_ context.Context, o *ImportDistrictTemplate) {
o.Centroid4326 = f
})
}
// Clear any values for the column
func (m importDistrictMods) UnsetCentroid4326() ImportDistrictMod {
return ImportDistrictModFunc(func(_ context.Context, o *ImportDistrictTemplate) {
o.Centroid4326 = nil
})
}
// Generates a random value for the column using the given faker
// if faker is nil, a default faker is used
// The generated value is sometimes null
func (m importDistrictMods) RandomCentroid4326(f *faker.Faker) ImportDistrictMod {
return ImportDistrictModFunc(func(_ context.Context, o *ImportDistrictTemplate) {
o.Centroid4326 = func() null.Val[string] {
if f == nil {
f = &defaultFaker
}
val := random_string(f)
return null.From(val)
}
})
}
// Generates a random value for the column using the given faker
// if faker is nil, a default faker is used
// The generated value is never null
func (m importDistrictMods) RandomCentroid4326NotNull(f *faker.Faker) ImportDistrictMod {
return ImportDistrictModFunc(func(_ context.Context, o *ImportDistrictTemplate) {
o.Centroid4326 = func() null.Val[string] {
if f == nil {
f = &defaultFaker
}
val := random_string(f)
return null.From(val)
}
})
}
// Set the model columns to this value
func (m importDistrictMods) Extent4326(val null.Val[string]) ImportDistrictMod {
return ImportDistrictModFunc(func(_ context.Context, o *ImportDistrictTemplate) {
o.Extent4326 = func() null.Val[string] { return val }
})
}
// Set the Column from the function
func (m importDistrictMods) Extent4326Func(f func() null.Val[string]) ImportDistrictMod {
return ImportDistrictModFunc(func(_ context.Context, o *ImportDistrictTemplate) {
o.Extent4326 = f
})
}
// Clear any values for the column
func (m importDistrictMods) UnsetExtent4326() ImportDistrictMod {
return ImportDistrictModFunc(func(_ context.Context, o *ImportDistrictTemplate) {
o.Extent4326 = nil
})
}
// Generates a random value for the column using the given faker
// if faker is nil, a default faker is used
// The generated value is sometimes null
func (m importDistrictMods) RandomExtent4326(f *faker.Faker) ImportDistrictMod {
return ImportDistrictModFunc(func(_ context.Context, o *ImportDistrictTemplate) {
o.Extent4326 = func() null.Val[string] {
if f == nil {
f = &defaultFaker
}
val := random_string(f)
return null.From(val)
}
})
}
// Generates a random value for the column using the given faker
// if faker is nil, a default faker is used
// The generated value is never null
func (m importDistrictMods) RandomExtent4326NotNull(f *faker.Faker) ImportDistrictMod {
return ImportDistrictModFunc(func(_ context.Context, o *ImportDistrictTemplate) {
o.Extent4326 = func() null.Val[string] {
if f == nil {
f = &defaultFaker
}
val := random_string(f)
return null.From(val)
}
})
}
func (m importDistrictMods) WithParentsCascading() ImportDistrictMod {
return ImportDistrictModFunc(func(ctx context.Context, o *ImportDistrictTemplate) {
if isDone, _ := importDistrictWithParentsCascadingCtx.Value(ctx); isDone {

View file

@ -26,29 +26,31 @@ import (
// ImportDistrict is an object representing the database table.
type ImportDistrict struct {
Gid int32 `db:"gid,pk" `
ID null.Val[decimal.Decimal] `db:"id" `
Website null.Val[string] `db:"website" `
Contact null.Val[string] `db:"contact" `
Address null.Val[string] `db:"address" `
Regionid null.Val[decimal.Decimal] `db:"regionid" `
PostalCod null.Val[decimal.Decimal] `db:"postal_cod" `
Phone1 null.Val[string] `db:"phone1" `
Fax1 null.Val[string] `db:"fax1" `
Agency null.Val[string] `db:"agency" `
Code1 null.Val[string] `db:"code1" `
City1 null.Val[string] `db:"city1" `
ShapeLeng null.Val[decimal.Decimal] `db:"shape_leng" `
Address2 null.Val[string] `db:"address2" `
GeneralMG null.Val[string] `db:"general_mg" `
City2 null.Val[string] `db:"city2" `
PostalC1 null.Val[decimal.Decimal] `db:"postal_c_1" `
Fax2 null.Val[string] `db:"fax2" `
Phone2 null.Val[string] `db:"phone2" `
ShapeLe1 null.Val[decimal.Decimal] `db:"shape_le_1" `
ShapeArea null.Val[decimal.Decimal] `db:"shape_area" `
Geom null.Val[string] `db:"geom" `
Geom4326 null.Val[string] `db:"geom_4326,generated" `
Gid int32 `db:"gid,pk" `
ID null.Val[decimal.Decimal] `db:"id" `
Website null.Val[string] `db:"website" `
Contact null.Val[string] `db:"contact" `
Address null.Val[string] `db:"address" `
Regionid null.Val[decimal.Decimal] `db:"regionid" `
PostalCod null.Val[decimal.Decimal] `db:"postal_cod" `
Phone1 null.Val[string] `db:"phone1" `
Fax1 null.Val[string] `db:"fax1" `
Agency null.Val[string] `db:"agency" `
Code1 null.Val[string] `db:"code1" `
City1 null.Val[string] `db:"city1" `
ShapeLeng null.Val[decimal.Decimal] `db:"shape_leng" `
Address2 null.Val[string] `db:"address2" `
GeneralMG null.Val[string] `db:"general_mg" `
City2 null.Val[string] `db:"city2" `
PostalC1 null.Val[decimal.Decimal] `db:"postal_c_1" `
Fax2 null.Val[string] `db:"fax2" `
Phone2 null.Val[string] `db:"phone2" `
ShapeLe1 null.Val[decimal.Decimal] `db:"shape_le_1" `
ShapeArea null.Val[decimal.Decimal] `db:"shape_area" `
Geom null.Val[string] `db:"geom" `
Geom4326 null.Val[string] `db:"geom_4326,generated" `
Centroid4326 null.Val[string] `db:"centroid_4326,generated" `
Extent4326 null.Val[string] `db:"extent_4326,generated" `
R importDistrictR `db:"-" `
}
@ -71,61 +73,65 @@ type importDistrictR struct {
func buildImportDistrictColumns(alias string) importDistrictColumns {
return importDistrictColumns{
ColumnsExpr: expr.NewColumnsExpr(
"gid", "id", "website", "contact", "address", "regionid", "postal_cod", "phone1", "fax1", "agency", "code1", "city1", "shape_leng", "address2", "general_mg", "city2", "postal_c_1", "fax2", "phone2", "shape_le_1", "shape_area", "geom", "geom_4326",
"gid", "id", "website", "contact", "address", "regionid", "postal_cod", "phone1", "fax1", "agency", "code1", "city1", "shape_leng", "address2", "general_mg", "city2", "postal_c_1", "fax2", "phone2", "shape_le_1", "shape_area", "geom", "geom_4326", "centroid_4326", "extent_4326",
).WithParent("import.district"),
tableAlias: alias,
Gid: psql.Quote(alias, "gid"),
ID: psql.Quote(alias, "id"),
Website: psql.Quote(alias, "website"),
Contact: psql.Quote(alias, "contact"),
Address: psql.Quote(alias, "address"),
Regionid: psql.Quote(alias, "regionid"),
PostalCod: psql.Quote(alias, "postal_cod"),
Phone1: psql.Quote(alias, "phone1"),
Fax1: psql.Quote(alias, "fax1"),
Agency: psql.Quote(alias, "agency"),
Code1: psql.Quote(alias, "code1"),
City1: psql.Quote(alias, "city1"),
ShapeLeng: psql.Quote(alias, "shape_leng"),
Address2: psql.Quote(alias, "address2"),
GeneralMG: psql.Quote(alias, "general_mg"),
City2: psql.Quote(alias, "city2"),
PostalC1: psql.Quote(alias, "postal_c_1"),
Fax2: psql.Quote(alias, "fax2"),
Phone2: psql.Quote(alias, "phone2"),
ShapeLe1: psql.Quote(alias, "shape_le_1"),
ShapeArea: psql.Quote(alias, "shape_area"),
Geom: psql.Quote(alias, "geom"),
Geom4326: psql.Quote(alias, "geom_4326"),
tableAlias: alias,
Gid: psql.Quote(alias, "gid"),
ID: psql.Quote(alias, "id"),
Website: psql.Quote(alias, "website"),
Contact: psql.Quote(alias, "contact"),
Address: psql.Quote(alias, "address"),
Regionid: psql.Quote(alias, "regionid"),
PostalCod: psql.Quote(alias, "postal_cod"),
Phone1: psql.Quote(alias, "phone1"),
Fax1: psql.Quote(alias, "fax1"),
Agency: psql.Quote(alias, "agency"),
Code1: psql.Quote(alias, "code1"),
City1: psql.Quote(alias, "city1"),
ShapeLeng: psql.Quote(alias, "shape_leng"),
Address2: psql.Quote(alias, "address2"),
GeneralMG: psql.Quote(alias, "general_mg"),
City2: psql.Quote(alias, "city2"),
PostalC1: psql.Quote(alias, "postal_c_1"),
Fax2: psql.Quote(alias, "fax2"),
Phone2: psql.Quote(alias, "phone2"),
ShapeLe1: psql.Quote(alias, "shape_le_1"),
ShapeArea: psql.Quote(alias, "shape_area"),
Geom: psql.Quote(alias, "geom"),
Geom4326: psql.Quote(alias, "geom_4326"),
Centroid4326: psql.Quote(alias, "centroid_4326"),
Extent4326: psql.Quote(alias, "extent_4326"),
}
}
type importDistrictColumns struct {
expr.ColumnsExpr
tableAlias string
Gid psql.Expression
ID psql.Expression
Website psql.Expression
Contact psql.Expression
Address psql.Expression
Regionid psql.Expression
PostalCod psql.Expression
Phone1 psql.Expression
Fax1 psql.Expression
Agency psql.Expression
Code1 psql.Expression
City1 psql.Expression
ShapeLeng psql.Expression
Address2 psql.Expression
GeneralMG psql.Expression
City2 psql.Expression
PostalC1 psql.Expression
Fax2 psql.Expression
Phone2 psql.Expression
ShapeLe1 psql.Expression
ShapeArea psql.Expression
Geom psql.Expression
Geom4326 psql.Expression
tableAlias string
Gid psql.Expression
ID psql.Expression
Website psql.Expression
Contact psql.Expression
Address psql.Expression
Regionid psql.Expression
PostalCod psql.Expression
Phone1 psql.Expression
Fax1 psql.Expression
Agency psql.Expression
Code1 psql.Expression
City1 psql.Expression
ShapeLeng psql.Expression
Address2 psql.Expression
GeneralMG psql.Expression
City2 psql.Expression
PostalC1 psql.Expression
Fax2 psql.Expression
Phone2 psql.Expression
ShapeLe1 psql.Expression
ShapeArea psql.Expression
Geom psql.Expression
Geom4326 psql.Expression
Centroid4326 psql.Expression
Extent4326 psql.Expression
}
func (c importDistrictColumns) Alias() string {
@ -913,29 +919,31 @@ func (importDistrict0 *ImportDistrict) AttachImportDistrictGidOrganization(ctx c
}
type importDistrictWhere[Q psql.Filterable] struct {
Gid psql.WhereMod[Q, int32]
ID psql.WhereNullMod[Q, decimal.Decimal]
Website psql.WhereNullMod[Q, string]
Contact psql.WhereNullMod[Q, string]
Address psql.WhereNullMod[Q, string]
Regionid psql.WhereNullMod[Q, decimal.Decimal]
PostalCod psql.WhereNullMod[Q, decimal.Decimal]
Phone1 psql.WhereNullMod[Q, string]
Fax1 psql.WhereNullMod[Q, string]
Agency psql.WhereNullMod[Q, string]
Code1 psql.WhereNullMod[Q, string]
City1 psql.WhereNullMod[Q, string]
ShapeLeng psql.WhereNullMod[Q, decimal.Decimal]
Address2 psql.WhereNullMod[Q, string]
GeneralMG psql.WhereNullMod[Q, string]
City2 psql.WhereNullMod[Q, string]
PostalC1 psql.WhereNullMod[Q, decimal.Decimal]
Fax2 psql.WhereNullMod[Q, string]
Phone2 psql.WhereNullMod[Q, string]
ShapeLe1 psql.WhereNullMod[Q, decimal.Decimal]
ShapeArea psql.WhereNullMod[Q, decimal.Decimal]
Geom psql.WhereNullMod[Q, string]
Geom4326 psql.WhereNullMod[Q, string]
Gid psql.WhereMod[Q, int32]
ID psql.WhereNullMod[Q, decimal.Decimal]
Website psql.WhereNullMod[Q, string]
Contact psql.WhereNullMod[Q, string]
Address psql.WhereNullMod[Q, string]
Regionid psql.WhereNullMod[Q, decimal.Decimal]
PostalCod psql.WhereNullMod[Q, decimal.Decimal]
Phone1 psql.WhereNullMod[Q, string]
Fax1 psql.WhereNullMod[Q, string]
Agency psql.WhereNullMod[Q, string]
Code1 psql.WhereNullMod[Q, string]
City1 psql.WhereNullMod[Q, string]
ShapeLeng psql.WhereNullMod[Q, decimal.Decimal]
Address2 psql.WhereNullMod[Q, string]
GeneralMG psql.WhereNullMod[Q, string]
City2 psql.WhereNullMod[Q, string]
PostalC1 psql.WhereNullMod[Q, decimal.Decimal]
Fax2 psql.WhereNullMod[Q, string]
Phone2 psql.WhereNullMod[Q, string]
ShapeLe1 psql.WhereNullMod[Q, decimal.Decimal]
ShapeArea psql.WhereNullMod[Q, decimal.Decimal]
Geom psql.WhereNullMod[Q, string]
Geom4326 psql.WhereNullMod[Q, string]
Centroid4326 psql.WhereNullMod[Q, string]
Extent4326 psql.WhereNullMod[Q, string]
}
func (importDistrictWhere[Q]) AliasedAs(alias string) importDistrictWhere[Q] {
@ -944,29 +952,31 @@ func (importDistrictWhere[Q]) AliasedAs(alias string) importDistrictWhere[Q] {
func buildImportDistrictWhere[Q psql.Filterable](cols importDistrictColumns) importDistrictWhere[Q] {
return importDistrictWhere[Q]{
Gid: psql.Where[Q, int32](cols.Gid),
ID: psql.WhereNull[Q, decimal.Decimal](cols.ID),
Website: psql.WhereNull[Q, string](cols.Website),
Contact: psql.WhereNull[Q, string](cols.Contact),
Address: psql.WhereNull[Q, string](cols.Address),
Regionid: psql.WhereNull[Q, decimal.Decimal](cols.Regionid),
PostalCod: psql.WhereNull[Q, decimal.Decimal](cols.PostalCod),
Phone1: psql.WhereNull[Q, string](cols.Phone1),
Fax1: psql.WhereNull[Q, string](cols.Fax1),
Agency: psql.WhereNull[Q, string](cols.Agency),
Code1: psql.WhereNull[Q, string](cols.Code1),
City1: psql.WhereNull[Q, string](cols.City1),
ShapeLeng: psql.WhereNull[Q, decimal.Decimal](cols.ShapeLeng),
Address2: psql.WhereNull[Q, string](cols.Address2),
GeneralMG: psql.WhereNull[Q, string](cols.GeneralMG),
City2: psql.WhereNull[Q, string](cols.City2),
PostalC1: psql.WhereNull[Q, decimal.Decimal](cols.PostalC1),
Fax2: psql.WhereNull[Q, string](cols.Fax2),
Phone2: psql.WhereNull[Q, string](cols.Phone2),
ShapeLe1: psql.WhereNull[Q, decimal.Decimal](cols.ShapeLe1),
ShapeArea: psql.WhereNull[Q, decimal.Decimal](cols.ShapeArea),
Geom: psql.WhereNull[Q, string](cols.Geom),
Geom4326: psql.WhereNull[Q, string](cols.Geom4326),
Gid: psql.Where[Q, int32](cols.Gid),
ID: psql.WhereNull[Q, decimal.Decimal](cols.ID),
Website: psql.WhereNull[Q, string](cols.Website),
Contact: psql.WhereNull[Q, string](cols.Contact),
Address: psql.WhereNull[Q, string](cols.Address),
Regionid: psql.WhereNull[Q, decimal.Decimal](cols.Regionid),
PostalCod: psql.WhereNull[Q, decimal.Decimal](cols.PostalCod),
Phone1: psql.WhereNull[Q, string](cols.Phone1),
Fax1: psql.WhereNull[Q, string](cols.Fax1),
Agency: psql.WhereNull[Q, string](cols.Agency),
Code1: psql.WhereNull[Q, string](cols.Code1),
City1: psql.WhereNull[Q, string](cols.City1),
ShapeLeng: psql.WhereNull[Q, decimal.Decimal](cols.ShapeLeng),
Address2: psql.WhereNull[Q, string](cols.Address2),
GeneralMG: psql.WhereNull[Q, string](cols.GeneralMG),
City2: psql.WhereNull[Q, string](cols.City2),
PostalC1: psql.WhereNull[Q, decimal.Decimal](cols.PostalC1),
Fax2: psql.WhereNull[Q, string](cols.Fax2),
Phone2: psql.WhereNull[Q, string](cols.Phone2),
ShapeLe1: psql.WhereNull[Q, decimal.Decimal](cols.ShapeLe1),
ShapeArea: psql.WhereNull[Q, decimal.Decimal](cols.ShapeArea),
Geom: psql.WhereNull[Q, string](cols.Geom),
Geom4326: psql.WhereNull[Q, string](cols.Geom4326),
Centroid4326: psql.WhereNull[Q, string](cols.Centroid4326),
Extent4326: psql.WhereNull[Q, string](cols.Extent4326),
}
}