52 lines
1.2 KiB
Go
52 lines
1.2 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"path/filepath"
|
|
"runtime"
|
|
|
|
"gorm.io/driver/mysql"
|
|
"gorm.io/gen"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
func main() {
|
|
// 连接数据库
|
|
dsn := "root:Xu950329.@tcp(localhost:3306)/spa?charset=utf8mb4&parseTime=True&loc=Local"
|
|
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
|
|
if err != nil {
|
|
panic(fmt.Errorf("connect db fail: %w", err))
|
|
}
|
|
|
|
// 获取项目根目录
|
|
_, filename, _, _ := runtime.Caller(0)
|
|
projectRoot := filepath.Dir(filepath.Dir(filepath.Dir(filename)))
|
|
|
|
// 创建gen实例
|
|
g := gen.NewGenerator(gen.Config{
|
|
OutPath: filepath.Join(projectRoot, "internal/data/query"),
|
|
ModelPkgPath: filepath.Join(projectRoot, "internal/data/model"),
|
|
Mode: gen.WithDefaultQuery | gen.WithQueryInterface,
|
|
FieldNullable: true,
|
|
FieldCoverable: false,
|
|
FieldSignable: false,
|
|
FieldWithIndexTag: true,
|
|
FieldWithTypeTag: true,
|
|
})
|
|
|
|
g.UseDB(db)
|
|
|
|
// 字段名映射,避免与方法名冲突
|
|
fieldOpts := []gen.ModelOpt{
|
|
gen.FieldRename("table_name", "TblName"),
|
|
gen.FieldRename("table", "TblName"), // 避免与Table()方法冲突
|
|
}
|
|
|
|
// 生成所有表的model和query
|
|
allTables := g.GenerateAllTable(fieldOpts...)
|
|
g.ApplyBasic(allTables...)
|
|
|
|
// 执行生成
|
|
g.Execute()
|
|
}
|