src/app/api/catalog/route.ts
Linked repository file from this build.
import { serverTiming } from "@/lib/server-timing";
import { NextResponse } from "next/server";
import { catalogQuerySchema } from "@/features/catalog/query";
import { apiRoute } from "@/lib/api-route";
import { getActor } from "@/lib/auth/server";
import { queryCatalog } from "@/lib/db/catalog-store";
export const dynamic = "force-dynamic";
export const GET = apiRoute("Unable to load work. Please retry.", async (request) => {
const timing = serverTiming();
const parsed = catalogQuerySchema.safeParse(
Object.fromEntries(new URL(request.url).searchParams),
);
if (!parsed.success)
return NextResponse.json({ error: "Check the work list filters." }, { status: 400 });
const actor = await timing.measure("auth", () => getActor(request));
return timing.json(await timing.measure("data", () => queryCatalog(actor, parsed.data)));
});