任务三
This commit is contained in:
+38
-4
@@ -7,6 +7,7 @@ import (
|
||||
|
||||
"gorm.io/driver/mysql"
|
||||
"gorm.io/gen"
|
||||
"gorm.io/gen/field"
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
@@ -39,12 +40,45 @@ func main() {
|
||||
// 字段名映射,避免与方法名冲突
|
||||
fieldOpts := []gen.ModelOpt{
|
||||
gen.FieldRename("table_name", "TblName"),
|
||||
gen.FieldRename("table", "TblName"), // 避免与Table()方法冲突
|
||||
gen.FieldRename("table", "TblName"),
|
||||
}
|
||||
|
||||
// 生成所有表的model和query
|
||||
allTables := g.GenerateAllTable(fieldOpts...)
|
||||
g.ApplyBasic(allTables...)
|
||||
// SysUser 关联配置
|
||||
sysUserOpts := append(fieldOpts,
|
||||
// Authority: belongs to SysAuthority
|
||||
gen.FieldRelate(field.HasOne, "Authority", g.GenerateModel("sys_authorities"),
|
||||
&field.RelateConfig{
|
||||
GORMTag: field.GormTag{
|
||||
"foreignKey": []string{"AuthorityID"},
|
||||
"references": []string{"AuthorityID"},
|
||||
},
|
||||
}),
|
||||
// Authorities: many2many through sys_user_authority
|
||||
gen.FieldRelate(field.Many2Many, "Authorities", g.GenerateModel("sys_authorities"),
|
||||
&field.RelateConfig{
|
||||
GORMTag: field.GormTag{
|
||||
"many2many": []string{"sys_user_authority"},
|
||||
"joinForeignKey": []string{"SysUserID"},
|
||||
"joinReferences": []string{"SysAuthorityAuthorityID"},
|
||||
},
|
||||
}),
|
||||
)
|
||||
|
||||
// 生成带关联的SysUser
|
||||
sysUser := g.GenerateModel("sys_users", sysUserOpts...)
|
||||
|
||||
// 生成其他表(不含sys_users)
|
||||
tables, _ := db.Migrator().GetTables()
|
||||
var models []interface{}
|
||||
for _, table := range tables {
|
||||
if table == "sys_users" {
|
||||
continue
|
||||
}
|
||||
models = append(models, g.GenerateModel(table, fieldOpts...))
|
||||
}
|
||||
|
||||
g.ApplyBasic(sysUser)
|
||||
g.ApplyBasic(models...)
|
||||
|
||||
// 执行生成
|
||||
g.Execute()
|
||||
|
||||
Reference in New Issue
Block a user