import { NextResponse } from "next/server"; import { errorResponse, requireReady } from "../../../_lib"; import { rejectWorkspaceForgery, saveMappings } from "@/server/spreadsheet-adapter/service"; import type { MappingInput } from "@/server/spreadsheet-adapter/dto"; export const runtime = "nodejs"; export const dynamic = "force-dynamic"; export async function PUT(request: Request, context: { params: Promise<{ id: string }> }) { try { const { ctx, deps } = await requireReady(); const { id } = await context.params; const body = (await request.json()) as { sourceId?: string; mappings?: MappingInput[]; workspace_id?: string }; await rejectWorkspaceForgery(deps, ctx, body.workspace_id); if (!body.sourceId || !Array.isArray(body.mappings)) { return NextResponse.json({ error: { code: "MAPPING_INCOMPLETE", message: "Informe o mapeamento." } }, { status: 400 }); } return NextResponse.json({ job: await saveMappings(deps, ctx, id, body.sourceId, body.mappings) }); } catch (error) { return errorResponse(error); } }