35 lines
1007 B
Python
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")
|