payloads.py 877 B

1234567891011121314151617181920212223242526272829
  1. """Formal payload draft API routes."""
  2. from __future__ import annotations
  3. from typing import Any
  4. from uuid import UUID
  5. from fastapi import APIRouter, Depends, HTTPException, Query
  6. from app.dependencies import get_decode_repository
  7. from app.schemas import PayloadDraftSchema
  8. router = APIRouter(prefix="/api/payloads", tags=["payloads"])
  9. @router.get("/drafts")
  10. def payload_drafts(
  11. item_id: UUID | None = Query(default=None),
  12. repo: Any = Depends(get_decode_repository),
  13. ) -> dict[str, Any]:
  14. list_drafts = getattr(repo, "list_payload_drafts", None)
  15. if list_drafts is None:
  16. raise HTTPException(status_code=501, detail="payload draft reader is not implemented")
  17. rows = list_drafts(item_id=item_id)
  18. return {
  19. "items": [
  20. PayloadDraftSchema.model_validate(row).model_dump(mode="json")
  21. for row in rows
  22. ]
  23. }