| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- package main
- import (
- "fwh-toolbox-server/config"
- "fwh-toolbox-server/database"
- "go.uber.org/zap"
- "gorm.io/gen"
- )
- // Dynamic SQL
- type Querier interface {
- // SELECT * FROM @@table WHERE name = @name{{if role !=""}} AND role = @role{{end}}
- FilterWithNameAndRole(name, role string) ([]gen.T, error)
- }
- func main() {
- // 指定生成代码的具体相对目录(相对于当前文件),默认:./query
- // 默认生成需要使用WithContext之后才可以查询的代码,但可以通过设置gen.WithoutContext禁用该模式
- g := gen.NewGenerator(gen.Config{
- // 默认会在 OutPath 目录生成CRUD代码,并且同目录下生成 model 包
- // 所以OutPath最终package不能设置为model,在有数据库表同步的情况下会产生冲突
- // 若一定要使用,可以通过ModelPkgPath单独指定model package的名称
- OutPath: "./models/fwh_pro/query",
- // ModelPkgPath: "./model",
- // gen.WithoutContext: 禁用WithContext模式
- // gen.WithDefaultQuery: 生成一个全局Query对象Q
- // gen.WithQueryInterface: 生成Query接口
- Mode: gen.WithDefaultQuery | gen.WithQueryInterface, // generate mode
- })
- // 通常复用项目中已有的SQL连接配置db(*grom.DB)
- // 非必须,但如果需要复用连接是的gorm.Config或需要连接数据库同步表信息则必须设置
- // gormdb, _ := gorm.Open(mysql.Open("root:@(127.0.0.1:3306)/demo?charset=utf8mb4&parseTime=True&loc=Local"))
- // g.UseDB(gormdb) // reuse your gorm db
- cfg, _ := config.LoadConfig()
- db, err := database.InitMySQL(cfg.MySQLDSN)
- if err != nil {
- zap.L().Error("Mysql Database Open Filed!", zap.String("err", err.Error()))
- return
- }
- g.UseDB(db)
- // 从连接的数据库为所有表生成Model结构体和CRUD代码
- // g.ApplyBasic(g.GenerateAllTable()...)
- // 也可以手动指定需要生成代码的数据表
- g.ApplyBasic(g.GenerateModel("iot_gateway", gen.FieldIgnore(
- "power_sun", // 太阳能发电功率
- "power_gen", // 发电机发电功率
- "power_uti", // 市电供电功率
- "power_fhp", // FHP 发电功率
- "power_load", // 负荷功率
- "battery_soc", // 电池 SOC
- "weather_county", // weather 天气 对应的县ID(zoneId)
- "weather_state", // weather 天气 对应的州(area)
- "gen_stat", // 发电机状态(0不使能 1停机 2启动 3运行 4退出 5故障)
- "main_sw", // 主开关状态(1,0,1 备电主开关 发电机主开关 光伏主开关 0-断开 1-闭合 数据来源201)
- ), gen.FieldGenType("ger_option", "Int8")))
- // Generate basic type-safe DAO API for struct `model.User` following conventions
- // g.ApplyBasic(model.User{})
- // Generate Type Safe API with Dynamic SQL defined on Querier interface for `model.User` and `model.Company`
- // g.ApplyInterface(func(Querier) {}, model.User{}, model.Company{})
- // Generate the code
- g.Execute()
- }
|