任务三

This commit is contained in:
Yvan
2026-01-07 11:53:56 +08:00
parent 05e12a2e2a
commit a017d93dbf
10 changed files with 1082 additions and 119 deletions
+38 -4
View File
@@ -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()