import type { NextApiRequest, NextApiResponse } from "next"; import { documentPage, saveDocumentBatch } from "@/lib/docs"; import { authorizeDocuments, documentApiError, idempotency, pagination, parseDocument } from "@/lib/documents-api"; export const config = { api: { bodyParser: { sizeLimit: "8mb" } } }; export default function handler(request: NextApiRequest, response: NextApiResponse) { try { const key = authorizeDocuments(request, response, request.method === "POST"); if (!key) return; if (request.method === "GET") { const { limit, offset } = pagination(request); return response.status(200).json(documentPage(limit, offset)); } if (request.method === "POST") { const result = saveDocumentBatch([parseDocument(request.body)], idempotency(request, key.id)); return response.status(200).json({ document: result.documents[0], replayed: result.replayed }); } response.setHeader("Allow", "GET, POST"); return response.status(405).end(); } catch (error) { return documentApiError(response, error); } }