跳到主要内容

模型

模型层负责数据结构的定义,Go Gin Boilerplate 使用 GORM 作为 ORM 工具,支持 MySQL、PostgreSQL、SQLite、SQL Server 等多种数据库。

所以在 模型 定义的时候,我们可以使用 gin 框架提供的 gorm 标签,来定义模型的字段类型、长度、索引、唯一性等。

internal/model 目录下,用于存放模型层相关代码。

基础模型

internal/model.go 作为模型包的入口文件,用于定义模型的基础模型等内容。

internal/model.go 中,我们定义 BasicModel 结构体,作为所有模型的基础模型。

// BasicModel 基础模型

type BasicModel struct {
ID uint `gorm:"primarykey" json:"id"` // ID
CreatedAt time.Time `json:"created_at"` // 创建时间
UpdatedAt time.Time `json:"updated_at"` // 更新时间
DeletedAt *time.Time `gorm:"index" json:"deleted_at"`
}

嵌入基础模型

在定义模型的时候,我们可以嵌入 BasicModel 结构体,来继承基础模型的字段。


type Example struct {
BasicModel

// other code field ...
}

模型定义

internal/model 目录下,我们规定一个文件声明一个模型,例如 example.go 文件,就是我们的示例模型,用于存放示例模型的定义。

package models

type Example struct {
BasicModel

Name string `json:"name"` // Name
Status string `json:"status" gorm:"default:active"` // Status, active or inactive
}