| package schema | |
| import ( | |
| "time" | |
| "entgo.io/ent" | |
| "entgo.io/ent/dialect" | |
| "entgo.io/ent/dialect/entsql" | |
| "entgo.io/ent/schema" | |
| "entgo.io/ent/schema/field" | |
| ) | |
| // Setting holds the schema definition for the Setting entity. | |
| // | |
| // 删除策略:硬删除 | |
| // Setting 使用硬删除而非软删除,原因如下: | |
| // - 系统设置是简单的键值对,删除即意味着恢复默认值 | |
| // - 设置变更通常通过应用日志追踪,无需在数据库层面保留历史 | |
| // - 保持表结构简洁,避免无效数据积累 | |
| // | |
| // 如需设置变更审计,建议在更新/删除前将变更记录写入审计日志表。 | |
| type Setting struct { | |
| ent.Schema | |
| } | |
| func (Setting) Annotations() []schema.Annotation { | |
| return []schema.Annotation{ | |
| entsql.Annotation{Table: "settings"}, | |
| } | |
| } | |
| func (Setting) Fields() []ent.Field { | |
| return []ent.Field{ | |
| field.String("key"). | |
| MaxLen(100). | |
| NotEmpty(). | |
| Unique(), | |
| field.String("value"). | |
| SchemaType(map[string]string{ | |
| dialect.Postgres: "text", | |
| }), | |
| field.Time("updated_at"). | |
| Default(time.Now). | |
| UpdateDefault(time.Now). | |
| SchemaType(map[string]string{ | |
| dialect.Postgres: "timestamptz", | |
| }), | |
| } | |
| } | |
| func (Setting) Indexes() []ent.Index { | |
| // key 字段已在 Fields() 中声明 Unique(),无需额外索引 | |
| return nil | |
| } | |