import { NextRequest, NextResponse } from "next/server"; import { toErrorResponse } from "@/lib/render-pipeline/errors"; import { requirePipelineAdmin, requirePipelineUser } from "@/lib/render-pipeline/session-auth"; import { createDeliveryRequest, listDeliveryRequests } from "@/lib/render-pipeline/delivery-requests"; import { createRequestSchema } from "@/lib/render-pipeline/delivery-request-state"; // ── GET /api/delivery-requests · POST /api/delivery-requests ───────────────── // // What clients have asked for, and how much of each ask has gone out. export async function GET(req: NextRequest) { try { await requirePipelineUser(); const { searchParams } = new URL(req.url); const requests = await listDeliveryRequests({ projectId: searchParams.get("projectId") ?? undefined, openOnly: searchParams.get("open") === "1", }); return NextResponse.json({ requests }); } catch (err) { const { body, status } = toErrorResponse(err); return NextResponse.json(body, { status }); } } export async function POST(req: NextRequest) { try { const user = await requirePipelineAdmin(); const parsed = createRequestSchema.safeParse(await req.json().catch(() => null)); if (!parsed.success) { return NextResponse.json( { error: parsed.error.issues[0]?.message ?? "Invalid request", details: parsed.error.issues }, { status: 422 } ); } const result = await createDeliveryRequest(parsed.data, user.id); return NextResponse.json(result, { status: 201 }); } catch (err) { const { body, status } = toErrorResponse(err); return NextResponse.json(body, { status }); } }