From cddcbc526f0948cd66d5ab083ec7b1da643be87e Mon Sep 17 00:00:00 2001 From: Matteo Giustini Date: Thu, 7 May 2026 10:23:59 +0200 Subject: [PATCH] Endpoint API ricerca veicoli --- backend/app/api/vehicles.py | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 backend/app/api/vehicles.py diff --git a/backend/app/api/vehicles.py b/backend/app/api/vehicles.py new file mode 100644 index 0000000..ca04359 --- /dev/null +++ b/backend/app/api/vehicles.py @@ -0,0 +1,34 @@ +from fastapi import APIRouter, Depends, HTTPException, Query, status +from sqlalchemy.ext.asyncio import AsyncSession + +from app.core.deps import get_db, get_current_user +from app.integrations.motornet import MotornetUnavailableError +from app.services import vehicle_lookup as svc +from app.schemas.vehicle import VehicleLookupResponse, VersionSelectRequest + +router = APIRouter() + + +@router.get("/lookup", response_model=VehicleLookupResponse) +async def lookup_vehicle( + plate: str = Query(..., min_length=5, max_length=10), + db: AsyncSession = Depends(get_db), + current_user=Depends(get_current_user), +): + try: + return await svc.lookup(plate, db) + except MotornetUnavailableError: + raise HTTPException( + status_code=status.HTTP_503_SERVICE_UNAVAILABLE, + detail="Lookup targa non disponibile. Inserire i dati del veicolo manualmente.", + ) + + +@router.post("/{plate}/select-version", status_code=status.HTTP_204_NO_CONTENT) +async def select_version( + plate: str, + body: VersionSelectRequest, + db: AsyncSession = Depends(get_db), + current_user=Depends(get_current_user), +): + await svc.select_version(plate, body.motornet_code, db)