import { Router } from "express";

import { asyncHandler } from "../../lib/async-handler.js";
import { requireAuth } from "../../middleware/auth.js";
import { reverseGeocodeLabel } from "./reverse-geocoding.js";

export const geocodingRouter = Router();

geocodingRouter.use(requireAuth);

geocodingRouter.get(
  "/reverse",
  asyncHandler(async (request, response) => {
    const lat = Number(request.query.lat);
    const lon = Number(request.query.lon);

    if (!Number.isFinite(lat) || !Number.isFinite(lon)) {
      return response.status(400).json({ message: "Invalid coordinates" });
    }

    try {
      const label = await reverseGeocodeLabel(lat, lon);
      response.json({ item: { label } });
    } catch {
      response.status(502).json({ message: "Reverse geocoding failed" });
    }
  }),
);
