Files
2026-01-09 19:24:41 +00:00

35 lines
1007 B
Python

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")