TriWorldBench's picture
Update TriWorldBench web from desktop manager
1187856 verified
Raw
History Blame Contribute Delete
1.99 kB
import { NextRequest, NextResponse } from "next/server";
import { getDb } from "@/lib/db";
import { all, get as dbGet } from "@/lib/db/helpers";
import { parseJsonField } from "@/lib/utils";
const SECTION_MAP: Record<string, () => unknown[]> = {
hero: () => all(getDb().prepare("SELECT * FROM hero_content ORDER BY id")),
overview: () =>
all<Record<string, unknown>>(getDb().prepare("SELECT * FROM overview_content ORDER BY id"))
.map((row) => parseJsonField(row, "stat_json")),
evaluation: () => all(getDb().prepare("SELECT * FROM evaluation_sections ORDER BY sort_order, id")),
research: () =>
all<Record<string, unknown>>(getDb().prepare("SELECT * FROM research_sections ORDER BY sort_order, id"))
.map((row) => parseJsonField(row, "tags_json")),
participation: () => all(getDb().prepare("SELECT * FROM participation_info ORDER BY sort_order, id")),
venue: () => all(getDb().prepare("SELECT * FROM venue_host_info ORDER BY id")),
policies: () => all(getDb().prepare("SELECT * FROM policy_items ORDER BY sort_order, id")),
contact: () => all(getDb().prepare("SELECT * FROM contact_info ORDER BY sort_order, id")),
other: () => all(getDb().prepare("SELECT * FROM other_information ORDER BY id")),
announcements: () =>
all(getDb().prepare("SELECT * FROM announcements ORDER BY published_at DESC, id DESC")),
"academic-references": () =>
all<Record<string, unknown>>(getDb().prepare("SELECT * FROM academic_references ORDER BY sort_order, id"))
.map((row) => parseJsonField(row, "tags_json")),
"metric-explanations": () => all(getDb().prepare("SELECT * FROM metric_explanations ORDER BY id")),
};
export async function GET(
_req: NextRequest,
{ params }: { params: Promise<{ section: string }> }
) {
const { section } = await params;
const handler = SECTION_MAP[section];
if (!handler) return NextResponse.json({ error: "unknown section" }, { status: 404 });
return NextResponse.json({ section, items: handler() });
}