freeleaps-service-hub/apps/authentication/webapi/routes/role/query_role_no_pagination.py

48 lines
1.4 KiB
Python

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