from datetime import datetime from fastapi import APIRouter from pydantic import BaseModel from typing import Optional, List from backend.services.permission.role_service import RoleService from common.token.token_manager import TokenManager router = APIRouter() token_manager = TokenManager() role_service = RoleService() class QueryRoleNoPaginationRequest(BaseModel): role_id: Optional[str] = None role_key: Optional[str] = None role_name: Optional[str] = None class RoleResponse(BaseModel): id: str role_key: str role_name: str role_description: Optional[str] = None permission_ids: List[str] role_level: int created_at: datetime updated_at: datetime class QueryRoleNoPaginationResponse(BaseModel): items: List[RoleResponse] total: int @router.post( "/query_role_no_pagination", response_model=QueryRoleNoPaginationResponse, operation_id="query-role-no-pagination", summary="Query Role No Pagination", description="Query roles fuzzy search without pagination." ) async def query_role_no_pagination( req: QueryRoleNoPaginationRequest, ) -> QueryRoleNoPaginationResponse: result = await role_service.query_roles_no_pagination(req.role_id, req.role_key, req.role_name) items = [RoleResponse(**item) for item in result["items"]] return QueryRoleNoPaginationResponse( items=items, total=result["total"] )