// Auteur : Simon-Pierre Boucher — contact@spboucher.ai // Recherche par carte : unités d'évaluation autour d'un point (boîte englobante). // Le rayon est plafonné côté serveur — la carte doit être assez zoomée. import { NextRequest, NextResponse } from "next/server"; import { unitsNear } from "@/lib/db"; const MAX_HALF_LAT = 0.02; // ~2,2 km const MAX_HALF_LNG = 0.03; const MAX_LIMIT = 400; export function GET(req: NextRequest) { const q = req.nextUrl.searchParams; const lat = Number(q.get("lat")); const lng = Number(q.get("lng")); if (!Number.isFinite(lat) || !Number.isFinite(lng)) { return NextResponse.json({ error: "lat et lng requis" }, { status: 400 }); } const halfLat = Math.min(Math.abs(Number(q.get("halfLat")) || 0.008), MAX_HALF_LAT); const halfLng = Math.min(Math.abs(Number(q.get("halfLng")) || 0.012), MAX_HALF_LNG); const limit = Math.min(Math.abs(Number(q.get("limit")) || 300), MAX_LIMIT); try { const results = unitsNear(lat, lng, halfLat, halfLng, limit).map((u) => ({ id: u.id_provinc, adresse: u.adresse, apt: u.apt, municipalite: u.municipalite, typeProp: u.type_prop, lat: u.lat, lng: u.lng, est2026: u.est_2026, })); return NextResponse.json({ results }); } catch { return NextResponse.json({ results: [] }); } }