import { asc, eq } from "drizzle-orm"; import { apiError, apiOk } from "@/lib/api"; import { withAdmin } from "@/lib/api-handler"; import { CatalogItemsBc, db } from "@/lib/db"; import { PERMS } from "@/lib/permissions"; import { loadCatalogItemsData } from "@/lib/services/catalog-items-loader"; function jsonSafe(data: T): T { return JSON.parse( JSON.stringify(data, (_k, v) => (typeof v === "bigint" ? Number(v) : v)), ) as T; } export const GET = withAdmin( { permission: PERMS.CATALOG_VIEW }, async (request) => { const pageId = Number(request.nextUrl.searchParams.get("pageId")); if (!Number.isFinite(pageId) || pageId <= 0) { return apiError("Invalid pageId"); } const isBc = request.nextUrl.searchParams.get("catalog") === "bc"; if (isBc) { const items = await db .select() .from(CatalogItemsBc) .where(eq(CatalogItemsBc.pageId, pageId)) .orderBy(asc(CatalogItemsBc.orderNumber)); return apiOk({ items: jsonSafe(items) }); } const data = await loadCatalogItemsData(pageId); return apiOk(jsonSafe(data) as unknown as Record); }, );