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 }) }