from fastapi import APIRouter, HTTPException from pydantic import BaseModel from typing import List, Optional, Dict, Any from ..scheduler import add_job, get_jobs, remove_job router = APIRouter() class JobCreate(BaseModel): task_name: str cron_expression: str args: Optional[List[Any]] = [] kwargs: Optional[Dict[str, Any]] = {} @router.get("/") def list_jobs(): return get_jobs() @router.post("/") def create_job(job: JobCreate): try: job_id = add_job(job.task_name, job.cron_expression, job.args, job.kwargs) return {"id": job_id, "message": "Job scheduled"} except ValueError as e: raise HTTPException(status_code=400, detail=str(e)) except Exception as e: raise HTTPException(status_code=500, detail=str(e)) @router.delete("/{job_id}") def delete_job(job_id: str): try: remove_job(job_id) return {"message": "Job deleted"} except Exception: raise HTTPException(status_code=404, detail="Job not found")