33 lines
1.3 KiB
Go
33 lines
1.3 KiB
Go
package repository
|
|
|
|
import (
|
|
"backend/pkg/permission/domain/entity"
|
|
"backend/pkg/permission/domain/permission"
|
|
"context"
|
|
)
|
|
|
|
// PermissionFilter 權限查詢過濾條件
|
|
type PermissionFilter struct {
|
|
Type *permission.Type
|
|
Status *permission.RecordState
|
|
ParentID *int64
|
|
}
|
|
|
|
// RolePermissionRepository 角色權限關聯 Repository 介面
|
|
type RolePermissionRepository interface {
|
|
// Create 建立角色權限關聯
|
|
Create(ctx context.Context, roleID int64, permissionIDs []int64) error
|
|
// Update 更新角色權限關聯 (先刪除再建立)
|
|
Update(ctx context.Context, roleID int64, permissionIDs []int64) error
|
|
// Delete 刪除角色的所有權限
|
|
Delete(ctx context.Context, roleID int64) error
|
|
// GetByRoleID 取得角色的所有權限關聯
|
|
GetByRoleID(ctx context.Context, roleID int64) ([]*entity.RolePermission, error)
|
|
// GetByRoleIDs 批量取得多個角色的權限關聯 (優化 N+1 查詢)
|
|
GetByRoleIDs(ctx context.Context, roleIDs []int64) (map[int64][]*entity.RolePermission, error)
|
|
// GetByPermissionIDs 根據權限 ID 取得所有角色關聯
|
|
GetByPermissionIDs(ctx context.Context, permissionIDs []int64) ([]*entity.RolePermission, error)
|
|
// GetRolesByPermission 根據權限 ID 取得所有角色 ID
|
|
GetRolesByPermission(ctx context.Context, permissionID int64) ([]int64, error)
|
|
}
|