import { getOptionalAppUserFromRequest } from "@/server/app/app-auth"; import { listPickedGalleryPhotos } from "@/server/site/gallery-photos"; import { NextResponse, type NextRequest } from "next/server"; export const runtime = "nodejs"; export const dynamic = "force-dynamic"; export async function GET(request: NextRequest) { try { const { searchParams } = new URL(request.url); const page = parseInt(searchParams.get("page") || "1", 10); const pageSize = parseInt( searchParams.get("pageSize") || searchParams.get("page_size") || "24", 10, ); const colorFamily = searchParams.get("colorFamily"); if (page < 1 || pageSize < 1 || pageSize > 100) { return NextResponse.json( { ok: false, error: "Invalid pagination parameters." }, { status: 400 }, ); } const user = await getOptionalAppUserFromRequest(request); const result = await listPickedGalleryPhotos({ colorFamily, page, pageSize, userId: user?.id ?? null, }); return NextResponse.json({ ok: true, data: result.data, pagination: { page, pageSize, total: result.total, hasMore: result.total > page * pageSize, nextPage: result.total > page * pageSize ? page + 1 : null, }, }); } catch (error) { const message = error instanceof Error ? error.message : "Unknown error."; return NextResponse.json( { ok: false, error: message }, { status: 500 }, ); } }