rbac/repositories/user_group.go
zhangkun9038@dingtalk.com ae75582d11 up
2025-02-16 18:55:51 +08:00

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