28 lines
818 B
Python
28 lines
818 B
Python
from __future__ import annotations
|
|
|
|
from fastapi import APIRouter, Depends, HTTPException, Query
|
|
|
|
from app.models.schemas import CoverageRequest, CoverageResponse
|
|
from app.services.coverage import CoverageService
|
|
|
|
router = APIRouter(prefix="/v1", tags=["coverage"])
|
|
|
|
|
|
def get_coverage_service() -> CoverageService:
|
|
from app.main import coverage_service
|
|
|
|
return coverage_service
|
|
|
|
|
|
@router.post("/coverage", response_model=CoverageResponse)
|
|
async def calculate_coverage(
|
|
request: CoverageRequest,
|
|
service: CoverageService = Depends(get_coverage_service),
|
|
) -> CoverageResponse:
|
|
try:
|
|
geojson = await service.calculate_coverage(request)
|
|
except ValueError as exc:
|
|
raise HTTPException(status_code=400, detail=str(exc)) from exc
|
|
|
|
return CoverageResponse(origin=request.origin, coverage_geojson=geojson)
|