From 04f64cf0599e2675738f444d6f18785057ffa0a8 Mon Sep 17 00:00:00 2001 From: itskovacs Date: Sat, 1 Nov 2025 17:49:14 +0100 Subject: [PATCH] update places router: gmaps api searchText --- backend/trip/routers/places.py | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/backend/trip/routers/places.py b/backend/trip/routers/places.py index 5126422..46e6733 100644 --- a/backend/trip/routers/places.py +++ b/backend/trip/routers/places.py @@ -6,11 +6,12 @@ from sqlmodel import select from ..config import settings from ..deps import SessionDep, get_current_username -from ..models.models import (Category, Image, Place, PlaceCreate, PlaceRead, - PlacesCreate, PlaceUpdate) +from ..models.models import (Category, Image, GooglePlaceResult, Place, PlaceCreate, + PlaceRead, PlacesCreate, PlaceUpdate) from ..security import verify_exists_and_owns from ..utils.utils import (b64img_decode, download_file, patch_image, save_image_to_file) +from ..utils.gmaps import compute_avg_price, gmaps_textsearch router = APIRouter(prefix="/api/places", tags=["places"]) @@ -110,6 +111,31 @@ async def create_places( return [PlaceRead.serialize(p) for p in new_places] +@router.get("/google-search", response_model=list[GooglePlaceResult]) +async def google_search_text(q: str, session: SessionDep, current_user: Annotated[str, Depends(get_current_username)]) -> list[GooglePlaceResult]: + db_user = session.get(User, current_user) + if not db_user or not db_user.google_apikey: + raise HTTPException(status_code=400, detail="Google Maps API key not configured") + + data = await gmaps_textsearch(q, db_user.google_apikey) + + results = [] + for place in data: + loc = place.get("location", {}) + result = GooglePlaceResult( + id=place.get("id"), + name=place.get("displayName", {}).get('text'), + lat=loc.get("latitude"), + lng=loc.get("longitude"), + price=compute_avg_price(place.get("priceRange")), + types=place.get("types", []), + allow_dogs=place.get("allowDogs") + ) + results.append(result) + + return results + + @router.put("/{place_id}", response_model=PlaceRead) def update_place( session: SessionDep,