__init__.py 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. from datetime import datetime
  2. from typing import Any, Optional
  3. from pydantic import BaseModel, ConfigDict
  4. from pydantic.alias_generators import to_camel
  5. def to_camel_if_str(v: Any) -> Any:
  6. if isinstance(v, str):
  7. parts = v.split("_")
  8. return parts[0] + "".join(p.capitalize() for p in parts[1:])
  9. return v
  10. class CamelModel(BaseModel):
  11. model_config = ConfigDict(
  12. populate_by_name=True,
  13. alias_generator=to_camel,
  14. from_attributes=True,
  15. )
  16. class R(BaseModel):
  17. code: int = 200
  18. msg: str = "操作成功"
  19. data: Any = None
  20. @staticmethod
  21. def ok(data: Any = None, msg: str = "操作成功") -> dict:
  22. return {"code": 200, "msg": msg, "data": data}
  23. @staticmethod
  24. def fail(msg: str = "操作失败") -> dict:
  25. return {"code": 500, "msg": msg, "data": None}
  26. @staticmethod
  27. def warn(msg: str = "") -> dict:
  28. return {"code": 601, "msg": msg, "data": None}
  29. class TableDataInfo(BaseModel):
  30. code: int = 200
  31. msg: str = "查询成功"
  32. rows: list = []
  33. total: int = 0
  34. @staticmethod
  35. def build(rows: list, total: int, msg: str = "查询成功") -> dict:
  36. return {"code": 200, "msg": msg, "rows": rows, "total": total}
  37. class PageQuery(BaseModel):
  38. page_num: int = 1
  39. page_size: int = 10
  40. @property
  41. def offset(self) -> int:
  42. return (self.page_num - 1) * self.page_size
  43. @property
  44. def limit(self) -> int:
  45. return self.page_size