aeus-admin/migrate/migrate.go

76 lines
1.8 KiB
Go

package migrate
import (
"errors"
"git.nobla.cn/golang/aeus-admin/models"
"gorm.io/gorm"
)
// Menu 合并菜单
func Menu(db *gorm.DB, datas ...*models.Menu) (err error) {
tx := db.Begin()
for _, model := range datas {
if err = tx.Where("name = ?", model.Name).First(model).Error; err != nil {
if errors.Is(err, gorm.ErrRecordNotFound) {
if err = tx.Create(model).Error; err != nil {
tx.Rollback()
return err
}
}
}
}
err = tx.Commit().Error
return
}
// Permission 合并权限数据
func Permission(db *gorm.DB, menuName string, permission string, label string) (permissionModel *models.Permission, err error) {
permissionModel = &models.Permission{}
if err = db.Where("permission = ? AND menu = ?", permission, menuName).First(permissionModel).Error; err != nil {
if errors.Is(err, gorm.ErrRecordNotFound) {
permissionModel.Menu = menuName
permissionModel.Label = label
permissionModel.Permission = permission
err = db.Create(permissionModel).Error
}
}
return
}
// #2c7be5
// Default 合并初始化数据集
func Default(db *gorm.DB) (err error) {
var (
n int64
)
for _, row := range defaultMenus {
if err = Menu(db, row); err != nil {
return
}
}
if db.Model(&models.Role{}).Count(&n); n == 0 {
db.Create(defaultRoles)
permissions := make([]*models.Permission, 0)
db.Find(&permissions)
for _, row := range defaultRoles {
items := make([]*models.RolePermission, 0)
for _, perm := range permissions {
item := &models.RolePermission{}
item.Role = row.Name
item.Permission = perm.Permission
items = append(items, item)
}
db.Save(items)
}
}
if db.Model(&models.Department{}).Count(&n); n == 0 {
db.Create(defaultDepartments)
}
if db.Model(&models.User{}).Count(&n); n == 0 {
db.Create(defaultUsers)
}
return
}