52 lines
1.2 KiB
Go
52 lines
1.2 KiB
Go
package main
|
|
|
|
import (
|
|
m "platform/web/models"
|
|
|
|
"gorm.io/driver/postgres"
|
|
"gorm.io/gen"
|
|
"gorm.io/gen/field"
|
|
"gorm.io/gorm"
|
|
"gorm.io/gorm/schema"
|
|
)
|
|
|
|
func main() {
|
|
db, _ := gorm.Open(
|
|
postgres.Open("host=localhost user=test password=test dbname=app port=5432 sslmode=disable TimeZone=Asia/Shanghai"),
|
|
&gorm.Config{
|
|
NamingStrategy: schema.NamingStrategy{
|
|
SingularTable: true,
|
|
},
|
|
},
|
|
)
|
|
|
|
g := gen.NewGenerator(gen.Config{
|
|
OutPath: "web/queries",
|
|
ModelPkgPath: "models",
|
|
Mode: gen.WithDefaultQuery | gen.WithoutContext,
|
|
})
|
|
g.UseDB(db)
|
|
|
|
models := g.GenerateAllTable(
|
|
gen.FieldType("created_at", "common.LocalDateTime"),
|
|
gen.FieldType("updated_at", "common.LocalDateTime"),
|
|
gen.FieldType("deleted_at", "common.LocalDateTime"),
|
|
)
|
|
g.ApplyBasic(models...)
|
|
|
|
modelChannel := g.GenerateModel("channel",
|
|
gen.FieldRelateModel(field.BelongsTo, "Node", &m.Node{}, &field.RelateConfig{
|
|
RelatePointer: true,
|
|
}),
|
|
gen.FieldRelateModel(field.BelongsTo, "User", &m.User{}, &field.RelateConfig{
|
|
RelatePointer: true,
|
|
}),
|
|
gen.FieldRelateModel(field.BelongsTo, "Proxy", &m.Proxy{}, &field.RelateConfig{
|
|
RelatePointer: true,
|
|
}),
|
|
)
|
|
g.ApplyBasic(modelChannel)
|
|
|
|
g.Execute()
|
|
}
|