fix(web): render content pages dynamically so next build needs no DB
CI / typecheck + build (turbo) (push) Canceled after 0s
CI / typecheck + build (turbo) (push) Canceled after 0s
The home, doc, and search pages queried Postgres during SSG/static data collection, so 'next build' failed in CI (no DB). Mark them force-dynamic (and drop generateStaticParams from the doc page) so they render at request time — instant at this corpus scale and build-safe without a live database.
This commit is contained in:
@@ -3,6 +3,12 @@ import { notFound } from "next/navigation";
|
|||||||
import { getDocument, listDocuments, getRelated, listRevisions } from "@mcpedia/core";
|
import { getDocument, listDocuments, getRelated, listRevisions } from "@mcpedia/core";
|
||||||
import Markdown from "@/components/Markdown";
|
import Markdown from "@/components/Markdown";
|
||||||
|
|
||||||
|
// Render at request time. The content lives in Postgres (populated by the
|
||||||
|
// indexer/worker), which is not available at build time (CI has no DB), so we
|
||||||
|
// opt out of static generation. At this corpus scale request-time rendering is
|
||||||
|
// instant.
|
||||||
|
export const dynamic = "force-dynamic";
|
||||||
|
|
||||||
export default async function DocPage({
|
export default async function DocPage({
|
||||||
params,
|
params,
|
||||||
}: {
|
}: {
|
||||||
@@ -80,11 +86,3 @@ export default async function DocPage({
|
|||||||
</article>
|
</article>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function generateStaticParams() {
|
|
||||||
const docs = await listDocuments();
|
|
||||||
return docs.map((d) => ({
|
|
||||||
section: d.section,
|
|
||||||
slug: d.slug.split("/").slice(1),
|
|
||||||
}));
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -2,6 +2,10 @@ import Link from "next/link";
|
|||||||
import { listDocuments } from "@mcpedia/core";
|
import { listDocuments } from "@mcpedia/core";
|
||||||
import type { DocumentMeta } from "@mcpedia/core";
|
import type { DocumentMeta } from "@mcpedia/core";
|
||||||
|
|
||||||
|
// Render at request time — content is in Postgres (not available at build in
|
||||||
|
// CI, which has no DB). Request-time rendering is instant at this corpus scale.
|
||||||
|
export const dynamic = "force-dynamic";
|
||||||
|
|
||||||
const SECTIONS = ["docs", "writeups", "research", "notes"] as const;
|
const SECTIONS = ["docs", "writeups", "research", "notes"] as const;
|
||||||
|
|
||||||
export default async function Home() {
|
export default async function Home() {
|
||||||
|
|||||||
@@ -1,6 +1,10 @@
|
|||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
import { keywordSearch, hybridSearch } from "@mcpedia/core";
|
import { keywordSearch, hybridSearch } from "@mcpedia/core";
|
||||||
|
|
||||||
|
// Render at request time — queries Postgres on each request (not at build,
|
||||||
|
// where CI has no DB).
|
||||||
|
export const dynamic = "force-dynamic";
|
||||||
|
|
||||||
type Mode = "keyword" | "hybrid";
|
type Mode = "keyword" | "hybrid";
|
||||||
|
|
||||||
export default async function SearchPage({
|
export default async function SearchPage({
|
||||||
|
|||||||
Reference in New Issue
Block a user