| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- from typing import Annotated, Generic, List, Optional, TypeVar
- from datetime import datetime
- from pydantic import BaseModel, ConfigDict, PlainSerializer
- from pydantic.alias_generators import to_camel
- T = TypeVar("T")
- def _dt_to_str(v: Optional[datetime]) -> Optional[str]:
- if v is None:
- return None
- return v.strftime("%Y-%m-%d %H:%M:%S")
- DatetimeToStr = Annotated[datetime, PlainSerializer(_dt_to_str, return_type=str)]
- OptDatetimeToStr = Annotated[Optional[datetime], PlainSerializer(_dt_to_str, return_type=Optional[str])]
- class PagedQuery(BaseModel):
- model_config = ConfigDict(populate_by_name=True, alias_generator=to_camel)
- page: int = 1
- page_size: int = 10
- class ApiResponse(BaseModel, Generic[T]):
- code: int = 0
- msg: str = "success"
- data: Optional[T] = None
- class PagedData(BaseModel, Generic[T]):
- model_config = ConfigDict(populate_by_name=True, alias_generator=to_camel)
- rows: List[T]
- total: int
- page: int
- page_size: int
- class PagedResponse(BaseModel, Generic[T]):
- code: int = 0
- msg: str = "success"
- data: Optional[PagedData[T]] = None
- class TokenResponse(BaseModel):
- model_config = ConfigDict(populate_by_name=True, alias_generator=to_camel)
- access_token: str
- token_type: str = "bearer"
|