tts-voice-creator-clone-and.../routes/jobs.py

33 lines
907 B
Python

"""Read-only status history for restart-safe background jobs."""
from __future__ import annotations
import time
from fastapi import APIRouter, HTTPException
from core.database import background_job_get, background_job_list
router = APIRouter()
def _public_job(job: dict) -> dict:
payload = dict(job)
payload.pop("fingerprint", None)
payload.pop("created", None)
payload.pop("updated", None)
payload["elapsed"] = round(time.time() - float(job.get("created") or time.time()), 1)
return payload
@router.get("/api/jobs")
async def jobs_list(kind: str = "", limit: int = 50):
return {"jobs": [_public_job(job) for job in background_job_list(kind, limit) if job]}
@router.get("/api/jobs/{job_id}")
async def jobs_get(job_id: str):
job = background_job_get(job_id)
if job is None:
raise HTTPException(404, "Unknown or expired job")
return _public_job(job)