UNPKG

@paroicms/server

Version:
68 lines 2.53 kB
import { formatDocValues } from "../../rendering-payload/doc-values.queries.js"; export async function fetchRawDocPayload(siteContext, parsedRoute) { const query = buildRawDocPayloadQuery(siteContext, parsedRoute); const rows = await query; if (!rows || rows.length === 0) return; return formatDocValues(rows[0], { language: parsedRoute.language, }); } function buildRawDocPayloadQuery(siteContext, parsedRoute) { const { cn } = siteContext; let query = cn("PaNode as l0") .innerJoin("PaLNode as s0", { "l0.id": "s0.nodeId", "s0.language": cn.raw("?", [parsedRoute.language]), }) .where("l0.id", siteContext.homeRoutingCluster.nodeId) .whereRaw("l0.publishDate <= current_timestamp") .where("s0.ready", 1); let prev = 0; for (const document of parsedRoute.documentHierarchy.slice(1)) { const cur = prev + 1; if (document.entryKind === "routing") { query = query.innerJoin(`PaNode as l${cur}`, { [`l${prev}.id`]: `l${cur}.parentId`, [`l${cur}.typeName`]: cn.raw("?", [document.documentType.typeName]), }); } else { query = query .innerJoin(`PaNode as l${cur}`, { [`l${prev}.id`]: `l${cur}.parentId`, [`l${cur}.relativeId`]: cn.raw("?", [document.relativeId]), }) .whereIn(`l${cur}.typeName`, document.candidateTypes.map((t) => t.typeName)); } query = query .innerJoin(`PaLNode as s${cur}`, { [`l${cur}.id`]: `s${cur}.nodeId`, [`s${cur}.language`]: cn.raw("?", [parsedRoute.language]), }) .whereRaw(`l${cur}.publishDate <= current_timestamp`) .where(`s${cur}.ready`, 1); prev = cur; } query = query.select([ `l${prev}.typeName as typeName`, `l${prev}.id as nodeId`, `l${prev}.relativeId as relativeId`, `l${prev}.publishDate as publishDate`, ]); if (!parsedRoute.redirectTo) { query = query .select([ "d.title as title", "d.slug as slug", "d.metaDescription as metaDescription", "d.metaKeywords as metaKeywords", ]) .innerJoin("PaDocument as d", { [`l${prev}.id`]: "d.nodeId", [`s${prev}.language`]: "d.language", }); } return query; } //# sourceMappingURL=raw-document-payload.js.map