Documentation
¶
Overview ¶
Package db 提供数据库连接与迁移。
本文件实现轻量级版本化数据库迁移器(无需外部 CLI 依赖):
- migrations/ 目录下的 SQL 文件用 //go:embed 嵌入二进制
- schema_migrations 表记录已执行的迁移版本
- 启动时按版本号顺序执行未应用的 up 迁移
命名约定:<version>_<name>.up.sql / <version>_<name>.down.sql version 为零填充整数(000001、000002…),确保字典序=数值序。
用法(bootstrap):
migrator, err := db.NewMigrator(database, db.DriverSQLite)
if err != nil { return err }
if err := migrator.Up(); err != nil { return err }
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var DB *gorm.DB
DB 全局数据库实例。 设计权衡:采用全局单例避免 service/dao 层构造期依赖注入复杂度——dao.NewXxxRepository() 内部调 GetDB() 获取连接,无需每个 service 持有 *gorm.DB。测试时用 SetDatabaseInstance 注入内存 sqlite。未来若迁移到 DI 容器(如 wire/fx),可改为构造注入。
Functions ¶
func Init ¶
func Init(cfg *conf.DatabaseConfig) error
func SetDatabaseInstance ¶
Types ¶
type Migrator ¶
type Migrator struct {
// contains filtered or unexported fields
}
Migrator 版本化迁移器。
func NewMigrator ¶
NewMigrator 创建迁移器并确保 schema_migrations 表存在。
Click to show internal directories.
Click to hide internal directories.