在项目宪章中新增第九条原则"数据库设计原则",明确禁止使用数据库外键约束和ORM关联标签。 主要变更: - 新增原则IX:数据库设计原则(Database Design Principles) - 强制要求:数据库表不得使用外键约束 - 强制要求:GORM模型不得使用ORM关联标签(foreignKey、hasMany等) - 强制要求:表关系必须通过ID字段手动维护 - 强制要求:关联数据查询必须显式编写,避免ORM魔法 - 强制要求:时间字段由GORM处理,不使用数据库触发器 设计理念: - 提升业务逻辑灵活性(无数据库约束限制) - 优化高并发性能(无外键检查开销) - 增强代码可读性(显式查询,无隐式预加载) - 简化数据库架构和迁移流程 - 支持分布式和微服务场景 版本升级:2.3.0 → 2.4.0(MINOR)
27 lines
647 B
Go
27 lines
647 B
Go
package model
|
|
|
|
import (
|
|
"time"
|
|
)
|
|
|
|
// User 用户实体
|
|
type User struct {
|
|
BaseModel
|
|
|
|
// 基本信息
|
|
Username string `gorm:"uniqueIndex:uk_user_username;not null;size:50" json:"username"`
|
|
Email string `gorm:"uniqueIndex:uk_user_email;not null;size:100" json:"email"`
|
|
Password string `gorm:"not null;size:255" json:"-"` // 不返回给客户端
|
|
|
|
// 状态字段
|
|
Status string `gorm:"not null;size:20;default:'active';index:idx_user_status" json:"status"`
|
|
|
|
// 元数据
|
|
LastLoginAt *time.Time `gorm:"column:last_login_at" json:"last_login_at,omitempty"`
|
|
}
|
|
|
|
// TableName 指定表名
|
|
func (User) TableName() string {
|
|
return "tb_user"
|
|
}
|