from datetime import datetime from fastapi import APIRouter from pydantic import BaseModel from typing import Optional, List from backend.services.permission.permission_service import PermissionService from common.token.token_manager import TokenManager router = APIRouter() token_manager = TokenManager() permission_service = PermissionService() class QueryPermissionNoPaginationRequest(BaseModel): permission_id: Optional[str] = None permission_key: Optional[str] = None permission_name: Optional[str] = None class PermissionResponse(BaseModel): id: str permission_key: str permission_name: str description: Optional[str] = None created_at: datetime updated_at: datetime class QueryPermissionNoPaginationResponse(BaseModel): items: List[PermissionResponse] total: int @router.post( "/query_permission_no_pagination", response_model=QueryPermissionNoPaginationResponse, operation_id="query-permission-no-pagination", summary="Query Permission No Pagination", description="Query permissions fuzzy search." ) async def query_permission_no_pagination( req: QueryPermissionNoPaginationRequest, ) -> QueryPermissionNoPaginationResponse: result = await permission_service.query_permissions_no_pagination(req.permission_id, req.permission_key, req.permission_name) items = [PermissionResponse(**item) for item in result["items"]] return QueryPermissionNoPaginationResponse( items=items, total=result["total"] )