| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- package migrate
- import (
- "gorm.io/gorm"
- )
- // migrationFunc 定义一个函数类型,用于执行数据库迁移操作。
- type migrationFunc func(gorm.Migrator, *gorm.DB)
- // migrationFiles 是一个切片,用于存储所有的迁移文件。
- var migrationFiles []MigrationFile
- // MigrationFile 定义一个结构体,用于存储迁移文件的信息。
- // 其中,Up 字段是一个函数类型,用于执行迁移操作;Down 字段是一个函数类型,用于回滚迁移操作;FileName 字段是迁移文件的名称。
- type MigrationFile struct {
- Up migrationFunc // Up 方法用于执行迁移操作
- Down migrationFunc // Down 方法用于回滚迁移操作
- FileName string // FileName 用于存储迁移文件的名称
- }
- // Add 新增一个迁移文件,所有的迁移文件都需要通过这个函数来注册。
- // up 和 down 分别是执行迁移和回滚操作的函数,fileName 是迁移文件的名称。
- func Add(up, down migrationFunc, fileName string) {
- migrationFiles = append(migrationFiles, MigrationFile{
- Up: up,
- Down: down,
- FileName: fileName,
- })
- }
- // getMigrationFile 用于根据迁移文件的名称获取对应的 MigrationFile 结构体。
- func getMigrationFile(name string) MigrationFile {
- for _, file := range migrationFiles {
- if file.FileName == name {
- return file
- }
- }
- return MigrationFile{}
- }
- func (file *MigrationFile) isNotMigrated(migrations []Migration) bool {
- for _, migration := range migrations {
- if migration.Migration == file.FileName {
- return false
- }
- }
- return true
- }
|