2026-05-01 05:45:45 +00:00
|
|
|
package main
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
//"database/sql"
|
|
|
|
|
"log"
|
|
|
|
|
"os"
|
|
|
|
|
|
2026-05-01 06:27:26 +00:00
|
|
|
"github.com/go-jet/jet/v2/generator/metadata"
|
|
|
|
|
genpostgres "github.com/go-jet/jet/v2/generator/postgres"
|
|
|
|
|
"github.com/go-jet/jet/v2/generator/template"
|
|
|
|
|
"github.com/go-jet/jet/v2/postgres"
|
2026-05-01 05:45:45 +00:00
|
|
|
_ "github.com/lib/pq"
|
|
|
|
|
)
|
|
|
|
|
|
2026-05-01 06:27:26 +00:00
|
|
|
type Box2D struct {
|
|
|
|
|
X float64
|
|
|
|
|
Y float64
|
|
|
|
|
}
|
|
|
|
|
|
2026-05-01 15:11:20 +00:00
|
|
|
var schemas []string = []string{
|
|
|
|
|
"arcgis",
|
|
|
|
|
"stadia",
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func customTemplate() template.Template {
|
|
|
|
|
return template.Default(postgres.Dialect).UseSchema(func(schema metadata.Schema) template.Schema {
|
|
|
|
|
return template.DefaultSchema(schema).UseModel(template.DefaultModel().UseTable(func(table metadata.Table) template.TableModel {
|
|
|
|
|
return template.DefaultTableModel(table).UseField(func(column metadata.Column) template.TableModelField {
|
|
|
|
|
defaultTableModelField := template.DefaultTableModelField(column)
|
|
|
|
|
//log.Printf("'%s' '%s' '%s'", table.Name, column.Name, column.DataType.Name)
|
|
|
|
|
if column.Name == "extent" && column.DataType.Name == "box2d" {
|
|
|
|
|
defaultTableModelField.Type = template.NewType(Box2D{})
|
|
|
|
|
}
|
|
|
|
|
return defaultTableModelField
|
|
|
|
|
})
|
2026-05-01 06:27:26 +00:00
|
|
|
}),
|
2026-05-01 15:11:20 +00:00
|
|
|
)
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func main() {
|
|
|
|
|
for _, schema := range schemas {
|
|
|
|
|
err := genpostgres.GenerateDSN(
|
|
|
|
|
"postgresql://?host=/var/run/postgresql&sslmode=disable&dbname=nidus-sync",
|
|
|
|
|
schema,
|
|
|
|
|
"../gen",
|
|
|
|
|
customTemplate(),
|
|
|
|
|
)
|
|
|
|
|
if err != nil {
|
|
|
|
|
log.Printf("Failed: %v", err)
|
|
|
|
|
os.Exit(1)
|
|
|
|
|
}
|
2026-05-01 05:45:45 +00:00
|
|
|
}
|
|
|
|
|
}
|