| 12345678910111213141516171819202122232425262728293031 |
- # app/utils/response.py
- from app.schemas.common import ApiResponse
- from typing import Any
- from pydantic import BaseModel
- def _to_serializable(data: Any):
- """自动将 ORM / Pydantic / list 转换为可序列化对象"""
- if isinstance(data, BaseModel):
- return data.dict()
- if hasattr(data, "__table__"): # SQLAlchemy ORM
- return {
- c.name: getattr(data, c.name)
- for c in data.__table__.columns
- }
- if isinstance(data, list):
- return [_to_serializable(i) for i in data]
- return data
- def success(data=None, message: str = "success"):
- return ApiResponse(
- code=0,
- message=message,
- data=_to_serializable(data)
- )
- def fail(message: str, code: int = 1):
- return ApiResponse(
- code=code,
- message=message,
- data=None
- )
|