75b1d16453
Made-with: Cursor
37 lines
903 B
Python
37 lines
903 B
Python
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)
|