import { NextResponse } from "next/server"; import { getSingleVerse, getChapterVerseIndex, getChapterVerses, } from "@/lib/api"; export async function GET( req: Request, { params }: { params: Promise<{ book: string }> }, ) { const { book } = await params; const url = new URL(req.url); const division = url.searchParams.get("division") || null; const chapterStr = url.searchParams.get("chapter"); const verseStr = url.searchParams.get("verse"); const indexOnly = url.searchParams.get("indexOnly") === "true"; const pageStr = url.searchParams.get("page"); const limitStr = url.searchParams.get("limit"); if (!chapterStr) { return NextResponse.json( { error: "chapter query param is required" }, { status: 400 }, ); } const chapter = parseInt(chapterStr); const effectiveDivision = book === "bg" ? null : division; // --- Single verse mode: ?verse=N --- if (verseStr) { const verseNum = parseInt(verseStr); const verse = await getSingleVerse( book, effectiveDivision, chapter, verseNum, ); if (!verse) { return NextResponse.json({ error: "Verse not found" }, { status: 404 }); } return NextResponse.json(verse); } // --- Index-only mode: return lightweight verse list for the sidebar --- if (indexOnly) { const verses = await getChapterVerseIndex(book, effectiveDivision, chapter); return NextResponse.json({ verses, total: verses.length }); } // --- Paginated mode: return full verse data in pages --- const page = Math.max(1, parseInt(pageStr || "1")); const limit = Math.min(100, Math.max(1, parseInt(limitStr || "20"))); const result = await getChapterVerses( book, effectiveDivision, chapter, page, limit, ); return NextResponse.json(result); }