package usecase import ( "backend/tmp/reborn-mongo/domain/entity" "context" ) // RoleUseCase 角色業務邏輯介面 type RoleUseCase interface { // Create 建立角色 Create(ctx context.Context, req CreateRoleRequest) (*RoleResponse, error) // Update 更新角色 Update(ctx context.Context, uid string, req UpdateRoleRequest) (*RoleResponse, error) // Delete 刪除角色 Delete(ctx context.Context, uid string) error // Get 取得角色 Get(ctx context.Context, uid string) (*RoleResponse, error) // List 列出所有角色 List(ctx context.Context, filter RoleFilterRequest) ([]*RoleResponse, error) // Page 分頁查詢角色 Page(ctx context.Context, filter RoleFilterRequest, page, size int) (*RolePageResponse, error) } // CreateRoleRequest 建立角色請求 type CreateRoleRequest struct { ClientID int `json:"client_id" binding:"required"` Name string `json:"name" binding:"required"` Permissions entity.Permissions `json:"permissions"` } // UpdateRoleRequest 更新角色請求 type UpdateRoleRequest struct { Name *string `json:"name"` Status *entity.Status `json:"status"` Permissions entity.Permissions `json:"permissions"` } // RoleFilterRequest 角色查詢過濾請求 type RoleFilterRequest struct { ClientID int `json:"client_id"` Name string `json:"name"` Status *entity.Status `json:"status"` Permissions []string `json:"permissions"` } // RoleResponse 角色回應 type RoleResponse struct { ID int64 `json:"id"` UID string `json:"uid"` ClientID int `json:"client_id"` Name string `json:"name"` Status entity.Status `json:"status"` Permissions entity.Permissions `json:"permissions"` CreateTime string `json:"create_time"` UpdateTime string `json:"update_time"` } // RoleWithUserCountResponse 角色回應 (含使用者數量) type RoleWithUserCountResponse struct { RoleResponse UserCount int `json:"user_count"` } // RolePageResponse 角色分頁回應 type RolePageResponse struct { List []*RoleWithUserCountResponse `json:"list"` Total int64 `json:"total"` Page int `json:"page"` Size int `json:"size"` }