package repositories import ( "gitea.zjmud.xyz/phyer/rbac/models" "gorm.io/gorm" ) func CreateRole(role *models.Role) (*models.Role, error) { result := db.Create(role) return role, result.Error } func GetAllRoles() ([]models.Role, error) { var roles []models.Role result := db.Find(&roles) return roles, result.Error } func GetRoleByID(id uint) (*models.Role, error) { var role models.Role result := db.First(&role, id) return &role, result.Error } func CheckRoleExists(name string) (bool, error) { var count int64 result := db.Model(&models.Role{}).Where("name = ?", name).Count(&count) return count > 0, result.Error } func AddPermissionToRole(roleID, permissionID uint) error { role := &models.Role{Model: gorm.Model{ID: roleID}} permission := &models.Permission{Model: gorm.Model{ID: permissionID}} return db.Model(role).Association("Permissions").Append(permission) } func GetRoles() ([]models.Role, error) { var roles []models.Role result := db.Preload("Permissions").Find(&roles) return roles, result.Error } func UpdateRole(id uint, updateData map[string]interface{}) (*models.Role, error) { var role models.Role result := db.Model(&role).Where("id = ?", id).Updates(updateData) if result.Error != nil { return nil, result.Error } return GetRoleByID(id) } func DeleteRole(id uint) error { result := db.Delete(&models.Role{}, id) return result.Error } func RemovePermissionFromRole(roleID uint, permissionID uint) error { return db.Model(&models.Role{Model: gorm.Model{ID: roleID}}).Association("Permissions").Delete(&models.Permission{Model: gorm.Model{ID: permissionID}}) }