freeleaps-service-hub/apps/authentication/webapi/routes/permission/query_permission_no_pagination.py

45 lines
1.5 KiB
Python

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"]
)