Import source: axon/routers/jobs
Import the existing local project snapshot. This commit organizes existing files; it does not represent newly developed functionality.
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
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,
|
||||
)
|
||||
Reference in New Issue
Block a user