archive_purge.py 1.0 KB

12345678910111213141516171819202122232425262728293031323334
  1. """Schemas for archive auto-purge (#1008 follow-up)."""
  2. from __future__ import annotations
  3. from pydantic import BaseModel, Field
  4. class ArchivePurgePreviewResponse(BaseModel):
  5. count: int
  6. total_bytes: int
  7. sample_filenames: list[str]
  8. older_than_days: int
  9. class ArchivePurgeRequest(BaseModel):
  10. older_than_days: int = Field(ge=1, le=3650)
  11. # #1390: parity with single-archive delete. False (default) soft-deletes
  12. # — files off disk, archive row hidden, Quick Stats preserved. True
  13. # also drops PrintLogEntry rows so the contribution leaves /stats.
  14. purge_stats: bool = False
  15. class ArchivePurgeResponse(BaseModel):
  16. deleted: int
  17. purge_stats: bool = False
  18. class ArchivePurgeSettings(BaseModel):
  19. enabled: bool = False
  20. days: int = Field(default=365, ge=7, le=3650)
  21. # #1390: scheduled-purge equivalent of the single-delete checkbox.
  22. # Default False — preserves Quick Stats; flip to True to also drop
  23. # the contribution from /stats every time the sweeper runs.
  24. purge_stats: bool = False