22 lines
1.0 KiB
TypeScript
22 lines
1.0 KiB
TypeScript
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); }
|
|
}
|