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