nidus-sync/db/dbinfo/publicreport.report.bob.go
Eli Ribble 1e071d5ce5
Overhaul publicreport storage layer, create unified tables
This is a huge change. I was getting really sick of the split between
nuisance/water tables when more than half of the data they store is
common. I finally bit off the big work of switching it all.

This creates a single unified table, publicreport.report and copies the
existing report data into it. It also ports existing data from the
original tables into the new table.

Along with all of this I also overhauled the system for handling
asynchronous work to use a LISTEN/NOTIFY connection from the database
and a single cache table to avoid ever losing work.
2026-03-18 15:36:20 +00:00

409 lines
9.4 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 dbinfo
import "github.com/aarondl/opt/null"
var PublicreportReports = Table[
publicreportReportColumns,
publicreportReportIndexes,
publicreportReportForeignKeys,
publicreportReportUniques,
publicreportReportChecks,
]{
Schema: "publicreport",
Name: "report",
Columns: publicreportReportColumns{
AddressRaw: column{
Name: "address_raw",
DBType: "text",
Default: "",
Comment: "",
Nullable: false,
Generated: false,
AutoIncr: false,
},
AddressNumber: column{
Name: "address_number",
DBType: "text",
Default: "",
Comment: "",
Nullable: false,
Generated: false,
AutoIncr: false,
},
AddressStreet: column{
Name: "address_street",
DBType: "text",
Default: "",
Comment: "",
Nullable: false,
Generated: false,
AutoIncr: false,
},
AddressLocality: column{
Name: "address_locality",
DBType: "text",
Default: "",
Comment: "",
Nullable: false,
Generated: false,
AutoIncr: false,
},
AddressRegion: column{
Name: "address_region",
DBType: "text",
Default: "",
Comment: "",
Nullable: false,
Generated: false,
AutoIncr: false,
},
AddressPostalCode: column{
Name: "address_postal_code",
DBType: "text",
Default: "",
Comment: "",
Nullable: false,
Generated: false,
AutoIncr: false,
},
AddressCountry: column{
Name: "address_country",
DBType: "text",
Default: "",
Comment: "",
Nullable: false,
Generated: false,
AutoIncr: false,
},
AddressID: column{
Name: "address_id",
DBType: "integer",
Default: "NULL",
Comment: "",
Nullable: true,
Generated: false,
AutoIncr: false,
},
Created: column{
Name: "created",
DBType: "timestamp without time zone",
Default: "",
Comment: "",
Nullable: false,
Generated: false,
AutoIncr: false,
},
Location: column{
Name: "location",
DBType: "geometry",
Default: "NULL",
Comment: "",
Nullable: true,
Generated: false,
AutoIncr: false,
},
H3cell: column{
Name: "h3cell",
DBType: "h3index",
Default: "NULL",
Comment: "",
Nullable: true,
Generated: false,
AutoIncr: false,
},
ID: column{
Name: "id",
DBType: "integer",
Default: "nextval('publicreport.report_id_seq'::regclass)",
Comment: "",
Nullable: false,
Generated: false,
AutoIncr: false,
},
LatlngAccuracyType: column{
Name: "latlng_accuracy_type",
DBType: "publicreport.accuracytype",
Default: "",
Comment: "",
Nullable: false,
Generated: false,
AutoIncr: false,
},
LatlngAccuracyValue: column{
Name: "latlng_accuracy_value",
DBType: "real",
Default: "",
Comment: "",
Nullable: false,
Generated: false,
AutoIncr: false,
},
MapZoom: column{
Name: "map_zoom",
DBType: "real",
Default: "",
Comment: "",
Nullable: false,
Generated: false,
AutoIncr: false,
},
OrganizationID: column{
Name: "organization_id",
DBType: "integer",
Default: "",
Comment: "",
Nullable: false,
Generated: false,
AutoIncr: false,
},
PublicID: column{
Name: "public_id",
DBType: "text",
Default: "",
Comment: "",
Nullable: false,
Generated: false,
AutoIncr: false,
},
ReporterName: column{
Name: "reporter_name",
DBType: "text",
Default: "",
Comment: "",
Nullable: false,
Generated: false,
AutoIncr: false,
},
ReporterEmail: column{
Name: "reporter_email",
DBType: "text",
Default: "",
Comment: "",
Nullable: false,
Generated: false,
AutoIncr: false,
},
ReporterPhone: column{
Name: "reporter_phone",
DBType: "text",
Default: "",
Comment: "",
Nullable: false,
Generated: false,
AutoIncr: false,
},
ReporterContactConsent: column{
Name: "reporter_contact_consent",
DBType: "boolean",
Default: "NULL",
Comment: "",
Nullable: true,
Generated: false,
AutoIncr: false,
},
ReportType: column{
Name: "report_type",
DBType: "text",
Default: "",
Comment: "",
Nullable: false,
Generated: 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,
},
Status: column{
Name: "status",
DBType: "publicreport.reportstatustype",
Default: "",
Comment: "",
Nullable: false,
Generated: false,
AutoIncr: false,
},
},
Indexes: publicreportReportIndexes{
ReportPkey: index{
Type: "btree",
Name: "report_pkey",
Columns: []indexColumn{
{
Name: "id",
Desc: null.FromCond(false, true),
IsExpression: false,
},
},
Unique: true,
Comment: "",
NullsFirst: []bool{false},
NullsDistinct: false,
Where: "",
Include: []string{},
},
ReportPublicIDKey: index{
Type: "btree",
Name: "report_public_id_key",
Columns: []indexColumn{
{
Name: "public_id",
Desc: null.FromCond(false, true),
IsExpression: false,
},
},
Unique: true,
Comment: "",
NullsFirst: []bool{false},
NullsDistinct: false,
Where: "",
Include: []string{},
},
},
PrimaryKey: &constraint{
Name: "report_pkey",
Columns: []string{"id"},
Comment: "",
},
ForeignKeys: publicreportReportForeignKeys{
PublicreportReportReportAddressIDFkey: foreignKey{
constraint: constraint{
Name: "publicreport.report.report_address_id_fkey",
Columns: []string{"address_id"},
Comment: "",
},
ForeignTable: "address",
ForeignColumns: []string{"id"},
},
PublicreportReportReportOrganizationIDFkey: foreignKey{
constraint: constraint{
Name: "publicreport.report.report_organization_id_fkey",
Columns: []string{"organization_id"},
Comment: "",
},
ForeignTable: "organization",
ForeignColumns: []string{"id"},
},
PublicreportReportReportReviewerIDFkey: foreignKey{
constraint: constraint{
Name: "publicreport.report.report_reviewer_id_fkey",
Columns: []string{"reviewer_id"},
Comment: "",
},
ForeignTable: "user_",
ForeignColumns: []string{"id"},
},
},
Uniques: publicreportReportUniques{
ReportPublicIDKey: constraint{
Name: "report_public_id_key",
Columns: []string{"public_id"},
Comment: "",
},
},
Checks: publicreportReportChecks{
ReportReportTypeCheck: check{
constraint: constraint{
Name: "report_report_type_check",
Columns: []string{"report_type"},
Comment: "",
},
Expression: "(report_type = ANY (ARRAY['nuisance'::text, 'water'::text]))",
},
},
Comment: "",
}
type publicreportReportColumns struct {
AddressRaw column
AddressNumber column
AddressStreet column
AddressLocality column
AddressRegion column
AddressPostalCode column
AddressCountry column
AddressID column
Created column
Location column
H3cell column
ID column
LatlngAccuracyType column
LatlngAccuracyValue column
MapZoom column
OrganizationID column
PublicID column
ReporterName column
ReporterEmail column
ReporterPhone column
ReporterContactConsent column
ReportType column
Reviewed column
ReviewerID column
Status column
}
func (c publicreportReportColumns) AsSlice() []column {
return []column{
c.AddressRaw, c.AddressNumber, c.AddressStreet, c.AddressLocality, c.AddressRegion, c.AddressPostalCode, c.AddressCountry, c.AddressID, c.Created, c.Location, c.H3cell, c.ID, c.LatlngAccuracyType, c.LatlngAccuracyValue, c.MapZoom, c.OrganizationID, c.PublicID, c.ReporterName, c.ReporterEmail, c.ReporterPhone, c.ReporterContactConsent, c.ReportType, c.Reviewed, c.ReviewerID, c.Status,
}
}
type publicreportReportIndexes struct {
ReportPkey index
ReportPublicIDKey index
}
func (i publicreportReportIndexes) AsSlice() []index {
return []index{
i.ReportPkey, i.ReportPublicIDKey,
}
}
type publicreportReportForeignKeys struct {
PublicreportReportReportAddressIDFkey foreignKey
PublicreportReportReportOrganizationIDFkey foreignKey
PublicreportReportReportReviewerIDFkey foreignKey
}
func (f publicreportReportForeignKeys) AsSlice() []foreignKey {
return []foreignKey{
f.PublicreportReportReportAddressIDFkey, f.PublicreportReportReportOrganizationIDFkey, f.PublicreportReportReportReviewerIDFkey,
}
}
type publicreportReportUniques struct {
ReportPublicIDKey constraint
}
func (u publicreportReportUniques) AsSlice() []constraint {
return []constraint{
u.ReportPublicIDKey,
}
}
type publicreportReportChecks struct {
ReportReportTypeCheck check
}
func (c publicreportReportChecks) AsSlice() []check {
return []check{
c.ReportReportTypeCheck,
}
}