from typing import Dict, Type, TypeVar, Union
from fastapi import HTTPException, status
from pydantic import BaseModel
from server.schemas.common import ResponseModel
T = TypeVar('T', bound=BaseModel)
def validate_request(request: Union[Dict, BaseModel], model_class: Type[T]) -> T:
"""验证请求数据并转换为对应的模型类"""
if isinstance(request, model_class):
return request
if isinstance(request, dict):
return model_class(**request)
return model_class(**dict(request))
def handle_response(res: ResponseModel) -> ResponseModel:
"""统一封装接口响应对象的状态与消息字段。"""
if res.code == status.HTTP_200_OK:
return res
raise HTTPException(status_code=res.code, detail=res.message)