package tables import ( "fmt" "time" "git.x2erp.com/qdy/go-db/sqldef" ) func init() { sqldef.AddRegistration(func(r *sqldef.Registry) { // 环境表 tb := sqldef.NewTable("config_environment", "环境表"). ID("config_environment_id", 8).NotNull().Comment("环境编码,主键").End(). String("env_name", 64).NotNull().Comment("环境名称").End(). String("description", 64).Comment("环境描述").End(). String("creator", 32).NotNull().Comment("创建人").End(). DateTime("created_at").NotNull().Default("CURRENT_TIMESTAMP").Comment("创建时间").End(). DateTime("updated_at").Default("CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP").Comment("更新时间").End() // 注册表 r.RegisterTable(tb.Build()) }) } // ConfigEnvironment 环境表结构体 type ConfigEnvironment struct { // 环境编码,主键 ConfigEnvironmentID string `gorm:"column:config_environment_id;type:varchar(8);primaryKey;not null;comment:环境编码,主键"` // 环境名称 EnvName string `gorm:"column:env_name;type:varchar(64);not null;comment:环境名称"` // 环境描述 Description *string `gorm:"column:description;type:varchar(64);comment:环境描述"` // 创建人 Creator string `gorm:"column:creator;type:varchar(32);not null;comment:创建人"` // 创建时间 CreatedAt time.Time `gorm:"column:created_at;not null;default:CURRENT_TIMESTAMP;comment:创建时间"` // 更新时间 UpdatedAt *time.Time `gorm:"column:updated_at;default:CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;comment:更新时间"` } // TableName 指定表名 func (ConfigEnvironment) TableName() string { return "config_environment" } // GetDefaultDataSQL 获取环境表默认数据的SQL语句(PostgreSQL版本) func GetDefaultDataSQL() []string { now := time.Now().Format("2006-01-02 15:04:05") return []string{ // 清空表数据(可选,根据需要决定是否包含) // "TRUNCATE TABLE config_environment RESTART IDENTITY;", // 单条SQL插入所有数据(PostgreSQL多行插入) fmt.Sprintf(`INSERT INTO config_environment (config_environment_id, env_name, description, creator, created_at, updated_at) VALUES ('dev', '开发环境', '用于开发人员本地开发和调试的环境', 'system', '%s', '%s'), ('test', '测试环境', '用于功能测试、集成测试的环境', 'system', '%s', '%s'), ('pre', '预发布环境', '用于生产前最后验证的环境,与生产环境配置一致', 'system', '%s', '%s'), ('prod', '生产环境', '正式对外提供服务的生产环境', 'system', '%s', '%s'), ('demo', '演示环境', '用于产品演示和客户体验的环境', 'system', '%s', '%s') ON CONFLICT (config_environment_id) DO UPDATE SET env_name = EXCLUDED.env_name, description = EXCLUDED.description, creator = EXCLUDED.creator, updated_at = EXCLUDED.updated_at;`, now, now, // dev now, now, // test now, now, // pre now, now, // prod now, now, // demo ), } }