| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- // Package: migrate 操作对象
- // 负责创建 migrations 数据表,以及执行迁移操作。
- package migrate
- import (
- "github.com/runningwater/gohub/pkg/database"
- "gorm.io/gorm"
- )
- // Migrator 结构体用于存储迁移器的相关信息。
- type Migrator struct {
- Folder string // Folder 是存储迁移文件的目录名。
- DB *gorm.DB // Db 是数据库连接对象。
- Migrator gorm.Migrator // Migrator 是 GORM 的迁移器对象。
- }
- func (m *Migrator) createMigrationsTable() {
- migration := Migration{}
- if !m.Migrator.HasTable(&migration) {
- // 如果表不存在,则创建表
- m.Migrator.CreateTable(&migration)
- }
- }
- // Migration 对应数据表 migrations 里的一条记录
- type Migration struct {
- ID uint64 `gorm:"primaryKey;autoIncrement;"`
- Migration string `gorm:"type:varchar(255);not null;unique;"`
- Batch int
- }
- func NewMigrator() *Migrator {
- migrator := &Migrator{
- Folder: "database/migrations",
- DB: database.DB,
- Migrator: database.DB.Migrator(),
- }
- migrator.createMigrationsTable()
- return migrator
- }
|