51 lines
1.4 KiB
Python
51 lines
1.4 KiB
Python
from datetime import datetime
|
|
|
|
from fastapi import APIRouter, HTTPException
|
|
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 QueryRoleByIdRequest(BaseModel):
|
|
role_id: str
|
|
|
|
class QueryRoleByIdResponse(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
|
|
|
|
|
|
@router.post(
|
|
"/query_by_id",
|
|
response_model=QueryRoleByIdResponse,
|
|
operation_id="query-role-by-id",
|
|
summary="Query Role by Id",
|
|
description="Query role by id."
|
|
)
|
|
async def query_roles_by_id(
|
|
req: QueryRoleByIdRequest,
|
|
) -> QueryRoleByIdResponse:
|
|
try:
|
|
result = await role_service.query_roles_by_id(req.role_id)
|
|
return QueryRoleByIdResponse(
|
|
id=str(result.id),
|
|
role_key=result.role_key,
|
|
role_name=result.role_name,
|
|
role_description=result.role_description,
|
|
permission_ids=result.permission_ids,
|
|
role_level=result.role_level,
|
|
created_at=result.created_at,
|
|
updated_at=result.updated_at
|
|
)
|
|
except Exception as e:
|
|
raise HTTPException(status_code=400, detail=str(e)) |