24 lines
833 B
TypeScript
24 lines
833 B
TypeScript
import { NextResponse } from "next/server";
|
|
import { readPage, readOcr } from "@/lib/wiki";
|
|
import { readMatches } from "@/lib/entity-index";
|
|
|
|
export async function GET(_req: Request, ctx: { params: Promise<{ docId: string; page: string }> }) {
|
|
const { docId, page } = await ctx.params;
|
|
const stem = /^p\d{3}$/.test(page) ? page : `p${page.padStart(3, "0")}`;
|
|
const md = await readPage(docId, stem);
|
|
if (!md) return NextResponse.json({ error: "not_found" }, { status: 404 });
|
|
|
|
const pageNum = parseInt(stem.replace("p", ""), 10);
|
|
const ocr = await readOcr(docId, pageNum);
|
|
const matches = await readMatches(docId, stem);
|
|
|
|
return NextResponse.json({
|
|
doc_id: docId,
|
|
page_id: md.fm.page_id ?? `${docId}/${stem}`,
|
|
page_number: pageNum,
|
|
frontmatter: md.fm,
|
|
body: md.body,
|
|
ocr,
|
|
matches,
|
|
});
|
|
}
|