From 80ad00f98d2472e609c44b4d1f3193a6f4b16ba2 Mon Sep 17 00:00:00 2001 From: maguodong Date: Sat, 28 Mar 2026 14:36:43 +0800 Subject: [PATCH] =?UTF-8?q?feat(database):=20=E6=B7=BB=E5=8A=A0=E5=9F=BA?= =?UTF-8?q?=E7=A1=80=E6=95=B0=E6=8D=AE=E6=A8=A1=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 创建 BaseModel 结构体,包含主键 ID、创建时间和更新时间字段 - 实现 BeforeCreate 钩子函数,自动设置创建和更新时间为当前时间 - 实现 BeforeUpdate 钩子函数,自动更新更新时间为当前时间 - 配置 GORM 数据库映射标签,包括主键、列名、数据类型等 - 添加 JSON 序列化标签支持,便于 API 返回数据 --- database/model/base.go | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 database/model/base.go diff --git a/database/model/base.go b/database/model/base.go new file mode 100644 index 0000000..1ac7194 --- /dev/null +++ b/database/model/base.go @@ -0,0 +1,28 @@ +package model + +import ( + "time" + + "gorm.io/gorm" +) + +// BaseModel 基础模型,包含自定义的创建时间和更新时间 +type BaseModel struct { + Id int `json:"id" gorm:"column:id;primaryKey;autoIncrement;common:主键ID"` // 主键 ID + CreateTime time.Time `gorm:"column:create_time;type:datetime;not null" json:"created_at"` // 创建时间 + UpdateTime time.Time `gorm:"column:update_time;type:datetime;not null" json:"updated_at"` // 更新时间 +} + +// BeforeCreate 创建前自动设置时间 +func (b *BaseModel) BeforeCreate(tx *gorm.DB) error { + now := time.Now() + b.CreateTime = now + b.UpdateTime = now + return nil +} + +// BeforeUpdate 更新前自动更新时间 +func (b *BaseModel) BeforeUpdate(tx *gorm.DB) error { + b.UpdateTime = time.Now() + return nil +}