"""Processing task query endpoints.""" from typing import List from fastapi import APIRouter, Depends, HTTPException from sqlalchemy.orm import Session from database import get_db from models import ProcessingTask from schemas import ProcessingTaskOut router = APIRouter(prefix="/api/tasks", tags=["Tasks"]) @router.get("", response_model=List[ProcessingTaskOut], summary="List processing tasks") def list_tasks( project_id: int | None = None, status: str | None = None, limit: int = 50, db: Session = Depends(get_db), ) -> List[ProcessingTask]: """Return recent background processing tasks.""" query = db.query(ProcessingTask) if project_id is not None: query = query.filter(ProcessingTask.project_id == project_id) if status is not None: query = query.filter(ProcessingTask.status == status) return query.order_by(ProcessingTask.created_at.desc()).limit(limit).all() @router.get("/{task_id}", response_model=ProcessingTaskOut, summary="Get processing task") def get_task(task_id: int, db: Session = Depends(get_db)) -> ProcessingTask: """Return one background task by id.""" task = db.query(ProcessingTask).filter(ProcessingTask.id == task_id).first() if not task: raise HTTPException(status_code=404, detail="Task not found") return task