62 lines
1.8 KiB
Go
62 lines
1.8 KiB
Go
package repositories
|
|
|
|
import (
|
|
"gitea.zjmud.xyz/phyer/rbac/models"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
func CreateUserGroup(userGroup *models.UserGroup) (*models.UserGroup, error) {
|
|
result := db.Create(userGroup)
|
|
return userGroup, result.Error
|
|
}
|
|
|
|
func GetUserGroupByID(id uint) (*models.UserGroup, error) {
|
|
var userGroup models.UserGroup
|
|
result := db.Preload("Users").Preload("Roles").First(&userGroup, id)
|
|
return &userGroup, result.Error
|
|
}
|
|
|
|
func GetUserGroups() ([]models.UserGroup, error) {
|
|
var userGroups []models.UserGroup
|
|
result := db.Preload("Users").Preload("Roles").Find(&userGroups)
|
|
return userGroups, result.Error
|
|
}
|
|
|
|
func UpdateUserGroup(id uint, updateData map[string]interface{}) (*models.UserGroup, error) {
|
|
var userGroup models.UserGroup
|
|
result := db.Model(&userGroup).Where("id = ?", id).Updates(updateData)
|
|
if result.Error != nil {
|
|
return nil, result.Error
|
|
}
|
|
return GetUserGroupByID(id)
|
|
}
|
|
|
|
func DeleteUserGroup(id uint) error {
|
|
result := db.Delete(&models.UserGroup{}, id)
|
|
return result.Error
|
|
}
|
|
|
|
func AddUserToGroup(userGroupID uint, userID uint) error {
|
|
return db.Model(&models.UserGroup{Model: gorm.Model{ID: userGroupID}}).
|
|
Association("Users").
|
|
Append(&models.User{Model: gorm.Model{ID: userID}})
|
|
}
|
|
|
|
func RemoveUserFromGroup(userGroupID uint, userID uint) error {
|
|
return db.Model(&models.UserGroup{Model: gorm.Model{ID: userGroupID}}).
|
|
Association("Users").
|
|
Delete(&models.User{Model: gorm.Model{ID: userID}})
|
|
}
|
|
|
|
func AddRoleToGroup(userGroupID uint, roleID uint) error {
|
|
return db.Model(&models.UserGroup{Model: gorm.Model{ID: userGroupID}}).
|
|
Association("Roles").
|
|
Append(&models.Role{Model: gorm.Model{ID: roleID}})
|
|
}
|
|
|
|
func RemoveRoleFromGroup(userGroupID uint, roleID uint) error {
|
|
return db.Model(&models.UserGroup{Model: gorm.Model{ID: userGroupID}}).
|
|
Association("Roles").
|
|
Delete(&models.Role{Model: gorm.Model{ID: roleID}})
|
|
}
|