package repositories import ( "gitea.zjmud.xyz/phyer/rbac/models" "gorm.io/gorm" ) func GetPermissionByID(id uint) (*models.Permission, error) { var permission models.Permission result := db.First(&permission, id) return &permission, result.Error } func GetPermissions() ([]models.Permission, error) { var permissions []models.Permission result := db.Find(&permissions) return permissions, result.Error } func UpdatePermission(id uint, updateData map[string]interface{}) (*models.Permission, error) { var permission models.Permission result := db.Model(&permission).Where("id = ?", id).Updates(updateData) if result.Error != nil { return nil, result.Error } return GetPermissionByID(id) } func CreatePermission(permission *models.Permission) (*models.Permission, error) { result := db.Create(permission) return permission, result.Error } func DeletePermission(id uint) error { result := db.Delete(&models.Permission{}, id) return result.Error } func CheckPermissionExists(name string) (bool, error) { var count int64 result := db.Model(&models.Permission{}).Where("name = ?", name).Count(&count) return count > 0, result.Error } func AssignRoleToUser(userID uint, roleID uint) error { user := &models.User{Model: gorm.Model{ID: userID}} role := &models.Role{Model: gorm.Model{ID: roleID}} return db.Model(user).Association("Roles").Append(role) } func RemoveRoleFromUser(userID uint, roleID uint) error { user := &models.User{Model: gorm.Model{ID: userID}} role := &models.Role{Model: gorm.Model{ID: roleID}} return db.Model(user).Association("Roles").Delete(role) }