# app/routers/amenities.py
from fastapi import APIRouter, Query, HTTPException
from typing import Optional, List

from app.models.response import NearbyAmenitiesResponse
from app.services.berlin_data_service import BerlinDataService

router = APIRouter(prefix="/amenities", tags=["amenities"])

# Services
berlin_data = BerlinDataService()

@router.get("/near-location")
async def get_amenities_near_location(
    lat: float = Query(..., description="Latitude"),
    lng: float = Query(..., description="Longitude"),
    radius: int = Query(500, ge=100, le=2000, description="Search radius in meters"),
    types: Optional[List[str]] = Query(None, description="Amenity types to include"),
):
    """Get all amenities near a specific location."""
    try:
        amenities = await berlin_data.get_amenities_near_point(
            lat, lng, radius, types
        )
        
        return NearbyAmenitiesResponse(
            location={"lat": lat, "lng": lng},
            radius=radius,
            amenities={"all": amenities},  # Group by type in real implementation
            summary=berlin_data.summarize_amenities(amenities)
        )
        
    except Exception as e:
        raise HTTPException(status_code=500, detail=f"Amenity search failed: {str(e)}")
