import { NextRequest, NextResponse } from "next/server";

const API_KEY = process.env.GOOGLE_MAPS_API_KEY;

export async function GET(request: NextRequest) {
  const input = request.nextUrl.searchParams.get("input")?.trim();

  if (!input) {
    return NextResponse.json({ predictions: [] });
  }

  if (!API_KEY) {
    return NextResponse.json(
      { predictions: [], message: "Google Maps API key is not configured." },
      { status: 500 },
    );
  }

  try {
    // Confirmed live: restricting to "(cities)" only ever returns
    // whole-city/locality results, and a whole city has no single
    // postal_code in Google's data (it spans many) — Place Details
    // for "Mumbai" or even "Andheri West" comes back with no
    // postal_code component at all. "geocode" additionally surfaces
    // narrower places (sublocalities, specific addresses) that do
    // carry one, which is what makes pincode auto-fill possible.
    const url = new URL("https://maps.googleapis.com/maps/api/place/autocomplete/json");
    url.searchParams.set("input", input);
    url.searchParams.set("types", "geocode");
    url.searchParams.set("key", API_KEY);

    const response = await fetch(url.toString(), { cache: "no-store" });
    const data = await response.json();

    if (data.status !== "OK" && data.status !== "ZERO_RESULTS") {
      console.error("Places autocomplete error:", data.status, data.error_message);
      return NextResponse.json({ predictions: [] });
    }

    return NextResponse.json({ predictions: data.predictions ?? [] });
  } catch (error) {
    console.error("Places autocomplete proxy error:", error);
    return NextResponse.json({ predictions: [] }, { status: 500 });
  }
}
