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)