from typing import Optional, Any, List, Union from pydantic import BaseModel, ConfigDict class PageData(BaseModel): """分页数据""" model_config = ConfigDict(from_attributes=True) items: List[Any] total: int skip: int limit: int class ApiResponse(BaseModel): """统一 API 响应格式""" model_config = ConfigDict(from_attributes=True) code: int = 0 msg: str = "success" data: Optional[Any] = None @classmethod def success(cls, data: Any = None, msg: str = "success"): """成功响应""" return cls(code=1, msg=msg, data=data) @classmethod def error(cls, msg: str = "error", code: int = 0): """错误响应""" return cls(code=code, msg=msg, data=None) @classmethod def no_data(cls, msg: str = "no data"): """无数据响应""" return cls(code=2, msg=msg, data=None)