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