48 lines
1.4 KiB
Python
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"]
|
|
)
|