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