import { adaptRevisionChain, adaptRevisionRegistration } from "@/lib/adapters/revisions"; import { backendRequest } from "@/lib/http/backend-client"; import { jsonSuccess, parseJsonBody, parsePositiveIntegerParam, withErrorHandling, } from "@/lib/http/response"; import type { RegisterRevisionResponseDto, RevisionChainResponseDto, } from "@/lib/types/backend"; import { parseRegisterRevisionPayload } from "@/lib/validation/revision"; type RouteContext = { params: Promise<{ orderId: string; }>; }; export async function GET(_request: Request, context: RouteContext) { return withErrorHandling(async () => { const { orderId: rawOrderId } = await context.params; const orderId = parsePositiveIntegerParam(rawOrderId, "orderId"); const response = await backendRequest( `/orders/${orderId}/revisions`, ); return jsonSuccess(adaptRevisionChain(response.data), { mode: "proxy", }); }); } export async function POST(request: Request, context: RouteContext) { return withErrorHandling(async () => { const { orderId: rawOrderId } = await context.params; const orderId = parsePositiveIntegerParam(rawOrderId, "orderId"); const rawPayload = await parseJsonBody(request); const payload = parseRegisterRevisionPayload(rawPayload); const response = await backendRequest( `/orders/${orderId}/revisions`, { method: "POST", body: JSON.stringify(payload), }, ); return jsonSuccess(adaptRevisionRegistration(response.data), { status: response.status, mode: "proxy", }); }); }