freeleaps-service-hub/apps/authentication/webapi/routes/role/query_role_by_id.py
2025-09-24 17:29:27 +08:00

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