31 lines
622 B
Python
31 lines
622 B
Python
|
|
from pydantic import BaseModel
|
||
|
|
from typing import Generic, TypeVar, Optional, List
|
||
|
|
|
||
|
|
T = TypeVar("T")
|
||
|
|
|
||
|
|
|
||
|
|
class Response(BaseModel, Generic[T]):
|
||
|
|
code: int = 200
|
||
|
|
msg: str = "success"
|
||
|
|
data: Optional[T] = None
|
||
|
|
|
||
|
|
@classmethod
|
||
|
|
def ok(cls, data=None, msg="success"):
|
||
|
|
return cls(code=200, msg=msg, data=data)
|
||
|
|
|
||
|
|
@classmethod
|
||
|
|
def error(cls, msg="error", code=500):
|
||
|
|
return cls(code=code, msg=msg, data=None)
|
||
|
|
|
||
|
|
|
||
|
|
class PageParams(BaseModel):
|
||
|
|
page: int = 1
|
||
|
|
page_size: int = 20
|
||
|
|
|
||
|
|
|
||
|
|
class PageResponse(BaseModel, Generic[T]):
|
||
|
|
total: int
|
||
|
|
page: int
|
||
|
|
page_size: int
|
||
|
|
items: List[T]
|