schemas.py 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. """请求 / 响应 Pydantic 模型。
  2. 注意:所有响应都使用 app/response.py 中的 ApiResponse 信封包裹,
  3. 本文件仅定义 data 字段内的业务数据结构。
  4. """
  5. from typing import Any
  6. from pydantic import BaseModel, Field
  7. class SearchRequest(BaseModel):
  8. """搜索请求体(POST 用)。"""
  9. query: str = Field(..., min_length=1, description="搜索关键词")
  10. locale: str | None = Field(default=None, description="语言代码,留空使用默认")
  11. page: int = Field(default=1, ge=1)
  12. per_page: int = Field(default=25, ge=1, le=100)
  13. class SearchData(BaseModel):
  14. """搜索响应数据(放入 ApiResponse.data 字段)。"""
  15. query: str
  16. count: int
  17. page: int
  18. per_page: int
  19. next_page: str | None = None
  20. sec_ids_used: list[int]
  21. results: list[dict[str, Any]]
  22. class CacheStatus(BaseModel):
  23. """缓存状态(放入 ApiResponse.data 字段)。"""
  24. sec_ids_count: int
  25. last_updated_at: str | None
  26. next_refresh_at: str | None
  27. class CacheRefreshResult(BaseModel):
  28. """手动刷新缓存的返回数据。"""
  29. sec_ids_count: int
  30. last_updated_at: str | None