migration.stub模版调整
目前migration.stub里面是固定的结构体,新创建迁移表后,还需要手动修改新创建的迁移文件。对模版文件进行如下调整。
func init() {
type {{StructName}} struct {
models.BaseModel
Name string `gorm:"type:varchar(255);not null;index"`
Email string `gorm:"type:varchar(255);index;default:null"`
Phone string `gorm:"type:varchar(20);index;default:null"`
Password string `gorm:"type:varchar(255)"`
models.CommonTimestampsField
}
up := func(migrator gorm.Migrator, DB *sql.DB) {
migrator.AutoMigrate(&{{StructName}}{})
}
down := func(migrator gorm.Migrator, DB *sql.DB) {
migrator.DropTable(&{{StructName}}{})
}
migrate.Add("{{FileName}}", up, down)
}
同时,对migration命令进行小修改,传入两个参数,第一个参数用途不变,第二个参数用于传入迁移模版文件,对结构体部分的变量赋值。
var CmdMakeMigration = &cobra.Command{
Use: "migration",
Short: "Create a migration file, example: make migration add_users_table",
Run: runMakeMigration,
Args: cobra.ExactArgs(2),
}
func runMakeMigration(cmd *cobra.Command, args []string) {
// 日期格式化
timeStr := app.TimenowInTimezone().Format("2006_01_02_150405")
model := makeModelFromString(args[0])
st := makeModelFromString(args[1])
fileName := timeStr + "_" + model.PackageName
filePath := fmt.Sprintf("database/migrations/%s.go", fileName)
createFileFromStub(filePath, "migration", st, map[string]string{"{{FileName}}": fileName})
console.Success("Migration file created,after modify it, use `migrate up` to migrate database.")
}
结构题里面的内容就需要进行修改一下了
嗯 的确是需要这么弄一下。这样只需要修改生成的
migrations
中的 struct 部分就可以了。我是这么改的。
然后 stub 中
是在后边生成其他迁移文件的时候发现的,才回过来看了一下。