Files
Axon/axon/routers/jobs.py
T
arsam ef4509a532 Import source: axon/routers/jobs
Import the existing local project snapshot. This commit organizes existing files; it does not represent newly developed functionality.
2026-09-18 23:06:23 +03:30

48 lines
1.5 KiB
Python

from fastapi import APIRouter, HTTPException
from axon.models import (
CrawlRequest,
JobCreateResponse,
JobResponse,
MapRequest,
ResearchRequest,
)
from axon.routers.crawl import crawl
from axon.routers.map import map_site
from axon.routers.research import research
from axon.services.jobs import create_job, get_job
router = APIRouter()
@router.post("/research/jobs", response_model=JobCreateResponse)
async def create_research_job(request: ResearchRequest) -> JobCreateResponse:
job = create_job("research", lambda: research(request))
return JobCreateResponse(job_id=job.job_id, status=job.status)
@router.post("/crawl/jobs", response_model=JobCreateResponse)
async def create_crawl_job(request: CrawlRequest) -> JobCreateResponse:
job = create_job("crawl", lambda: crawl(request))
return JobCreateResponse(job_id=job.job_id, status=job.status)
@router.post("/map/jobs", response_model=JobCreateResponse)
async def create_map_job(request: MapRequest) -> JobCreateResponse:
job = create_job("map", lambda: map_site(request))
return JobCreateResponse(job_id=job.job_id, status=job.status)
@router.get("/jobs/{job_id}", response_model=JobResponse)
async def read_job(job_id: str) -> JobResponse:
job = get_job(job_id)
if job is None:
raise HTTPException(status_code=404, detail="Job not found")
return JobResponse(
job_id=job.job_id,
kind=job.kind,
status=job.status,
result=job.result,
error=job.error,
)