UNPKG

@paroicms/server

Version:
43 lines 1.62 kB
import { assignLoadDescriptor } from "@paroicms/public-server-lib"; import { type } from "arktype"; import { makeCacheDependencyKey } from "../common/text-cache.js"; import { mainDbSchemaName } from "../connector/db-init/db-constants.js"; export async function getParentDocument(renderingContext, documentId) { const { siteContext } = renderingContext; const parentNode = await getParentNode(siteContext, renderingContext.tracker, documentId.nodeId); if (!parentNode || parentNode.parentTypeName === "_site") { return undefined; } const parentDocumentId = { nodeId: parentNode.parentNodeId, language: documentId.language, }; renderingContext.addDependencyKey(makeCacheDependencyKey({ documentId: parentDocumentId })); return assignLoadDescriptor({}, { load: "one", nodeKind: "document", descriptorName: "id", documentId: parentDocumentId, }); } const ParentNodeRowAT = type({ parentTypeName: "string", parentId: "number", "+": "reject", }).pipe((r) => ({ parentTypeName: r.parentTypeName, parentNodeId: String(r.parentId), })); async function getParentNode(siteContext, tracker, nodeId) { const row = await siteContext .cn("PaNode as n") .select(["n2.typeName as parentTypeName", "n2.id as parentId"]) .where("n.id", nodeId) .innerJoin("PaNode as n2", "n2.id", "n.parentId") .first(); tracker.trackAccess(mainDbSchemaName, "PaNode", "read"); if (!row) return; return ParentNodeRowAT.assert(row); } //# sourceMappingURL=get-parent.queries.js.map