import { NextResponse } from "next/server";
import { auth } from "@/auth";
import { db, caseStudies, showcaseItems, educationResources } from "@/db";
import { and, arrayContains, eq, ilike, or } from "drizzle-orm";
import { matchPeople } from "@/lib/match";

/** GET /api/search?q= – global search across people, case studies, showcase, education. */
export async function GET(req: Request) {
  const session = await auth();
  if (!session?.user) return NextResponse.json({ error: "unauthenticated" }, { status: 401 });
  const q = new URL(req.url).searchParams.get("q")?.trim() ?? "";
  if (!q) return NextResponse.json({ people: [], caseStudies: [], showcase: [], education: [] });
  const like = `%${q}%`;
  const [people, studies, showcase, education] = await Promise.all([
    matchPeople({ query: q, limit: 8 }),
    db.select({ slug: caseStudies.slug, title: caseStudies.title, clientName: caseStudies.clientName }).from(caseStudies)
      .where(and(eq(caseStudies.published, true), or(ilike(caseStudies.title, like), ilike(caseStudies.clientName, like), ilike(caseStudies.summary, like), arrayContains(caseStudies.tags, [q])))).limit(6),
    db.select({ slug: showcaseItems.slug, title: showcaseItems.title, discipline: showcaseItems.discipline }).from(showcaseItems)
      .where(or(ilike(showcaseItems.title, like), ilike(showcaseItems.blurb, like))).limit(6),
    db.select({ id: educationResources.id, title: educationResources.title, url: educationResources.url, specialty: educationResources.specialty }).from(educationResources)
      .where(or(ilike(educationResources.title, like), ilike(educationResources.description, like), ilike(educationResources.specialty, like))).limit(6),
  ]);
  return NextResponse.json({ people, caseStudies: studies, showcase, education });
}
