36 lines
794 B
Go
36 lines
794 B
Go
package database
|
|
|
|
import (
|
|
"RenewCMS/internal/domain/role"
|
|
domainUser "RenewCMS/internal/domain/user"
|
|
entity "RenewCMS/internal/infrastructure/persistence/models"
|
|
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
var legacyRoleNames = map[domainUser.Role]string{
|
|
domainUser.RoleOwner: role.OwnerName,
|
|
domainUser.RoleAdmin: role.AdminName,
|
|
}
|
|
|
|
func BackfillUserRoleIDs(db *gorm.DB) error {
|
|
return db.Transaction(func(tx *gorm.DB) error {
|
|
for legacy, name := range legacyRoleNames {
|
|
roleID, found, err := builtInRoleID(tx, name)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
if !found {
|
|
continue
|
|
}
|
|
err = tx.Model(&entity.User{}).
|
|
Where("role = ? AND (role_id IS NULL OR role_id = 0)", string(legacy)).
|
|
UpdateColumn("role_id", roleID).Error
|
|
if err != nil {
|
|
return err
|
|
}
|
|
}
|
|
return nil
|
|
})
|
|
}
|