SPB Git

Repository Public

route.ts 1.4 KB 39 lines typescript

1// Auteur : Simon-Pierre Boucher — contact@spboucher.ai2// Recherche dans les propriétés à vendre (copie Immo-Ka + estimations vp_eval).3import { NextRequest, NextResponse } from "next/server";4import { searchListings, type SortKey, type TypeGroupKey } from "@/lib/immoka";56export const dynamic = "force-dynamic";78const SORTS: SortKey[] = ["recent", "price_asc", "price_desc", "deal", "premium", "est_desc"];9const GROUPS: TypeGroupKey[] = ["maison", "condo", "plex", "terrain", "chalet", "fermette", "mobile", "commercial", "autre"];1011export function GET(req: NextRequest) {12  const q = req.nextUrl.searchParams;13  const num = (k: string) => {14    const v = Number(q.get(k));15    return Number.isFinite(v) && v > 0 ? v : undefined;16  };17  const sort = q.get("sort") as SortKey | null;18  const group = q.get("group") as TypeGroupKey | null;19  try {20    const res = searchListings({21      q: q.get("q") ?? undefined,22      muni: q.get("muni") ?? undefined,23      group: group && GROUPS.includes(group) ? group : "",24      min: num("min"),25      max: num("max"),26      beds: num("beds"),27      evalOnly: q.get("eval") === "1",28      sort: sort && SORTS.includes(sort) ? sort : "recent",29      page: num("page") ?? 1,30      per: num("per") ?? 24,31    });32    return NextResponse.json(res, {33      headers: { "Cache-Control": "public, max-age=120, stale-while-revalidate=600" },34    });35  } catch (e) {36    return NextResponse.json({ error: String(e) }, { status: 500 });37  }38}39
Files main
Menu

Theme