library_trash.py 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. """Schemas for the library trash bin + bulk purge (#1008)."""
  2. from __future__ import annotations
  3. from datetime import datetime
  4. from pydantic import BaseModel, Field
  5. class PurgePreviewResponse(BaseModel):
  6. count: int
  7. total_bytes: int
  8. sample_filenames: list[str]
  9. older_than_days: int
  10. include_never_printed: bool
  11. class PurgeRequest(BaseModel):
  12. older_than_days: int = Field(ge=1, le=3650)
  13. include_never_printed: bool = True
  14. class PurgeResponse(BaseModel):
  15. moved_to_trash: int
  16. class TrashFile(BaseModel):
  17. id: int
  18. filename: str
  19. file_size: int
  20. thumbnail_path: str | None = None
  21. folder_id: int | None = None
  22. folder_name: str | None = None
  23. created_by_id: int | None = None
  24. created_by_username: str | None = None
  25. deleted_at: datetime
  26. auto_purge_at: datetime
  27. class TrashListResponse(BaseModel):
  28. items: list[TrashFile]
  29. total: int
  30. retention_days: int
  31. class TrashSettings(BaseModel):
  32. retention_days: int = Field(ge=1, le=365)
  33. auto_purge_enabled: bool = False
  34. auto_purge_days: int = Field(default=90, ge=7, le=3650)
  35. auto_purge_include_never_printed: bool = True
  36. class EmptyTrashResponse(BaseModel):
  37. deleted: int