Files
mayfly-go/server/migrations/init.go

75 lines
1.5 KiB
Go
Raw Normal View History

2023-07-20 20:34:05 +08:00
package migrations
import (
"mayfly-go/internal/sys/domain/entity"
2023-07-22 20:51:46 +08:00
"mayfly-go/pkg/config"
"mayfly-go/pkg/model"
2023-07-20 20:34:05 +08:00
"mayfly-go/pkg/rediscli"
"time"
2023-07-22 20:51:46 +08:00
"github.com/go-gormigrate/gormigrate/v2"
"gorm.io/gorm"
2023-07-20 20:34:05 +08:00
)
// RunMigrations 数据库迁移操作
func RunMigrations(db *gorm.DB) error {
// 添加分布式锁, 防止多个服务同时执行迁移
2023-07-22 20:51:46 +08:00
lock := rediscli.NewLock("mayfly:db:migrations", 1*time.Minute)
if lock != nil {
if !lock.Lock() {
2023-07-20 20:34:05 +08:00
return nil
}
2023-07-22 20:51:46 +08:00
defer lock.UnLock()
}
if !config.Conf.Mysql.AutoMigration {
return nil
2023-07-20 20:34:05 +08:00
}
2023-07-22 20:51:46 +08:00
2023-07-20 20:34:05 +08:00
return run(db,
2023-07-22 20:51:46 +08:00
// T2022,
2023-12-27 22:59:20 +08:00
// T20230720,
T20231125,
2023-07-20 20:34:05 +08:00
)
}
func run(db *gorm.DB, fs ...func() *gormigrate.Migration) error {
var ms []*gormigrate.Migration
for _, f := range fs {
ms = append(ms, f())
}
m := gormigrate.New(db, &gormigrate.Options{
TableName: "migrations",
IDColumnName: "id",
IDColumnSize: 200,
UseTransaction: true,
ValidateUnknownMigrations: true,
}, ms)
if err := m.Migrate(); err != nil {
return err
}
return nil
}
func insertResource(tx *gorm.DB, res *entity.Resource) error {
now := time.Now()
res.CreateTime = &now
res.CreatorId = 1
res.Creator = "admin"
res.UpdateTime = &now
res.ModifierId = 1
res.Modifier = "admin"
if err := tx.Save(res).Error; err != nil {
return err
}
2024-12-08 13:04:23 +08:00
return tx.Save(&entity.RoleResource{
DeletedModel: model.DeletedModel{},
RoleId: 1,
ResourceId: res.Id,
CreateTime: &now,
CreatorId: 1,
Creator: "admin",
}).Error
}