rbac/repositories/role.go
zhangkun9038@dingtalk.com 3cc2b18081 up
2025-02-16 20:28:47 +08:00

60 lines
1.6 KiB
Go

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