UNPKG

@paroicms/server

Version:
44 lines 1.72 kB
import { type } from "arktype"; import { mainDbSchemaName } from "../connector/db-init/db-constants.js"; import { dbAnyLanguage } from "../context.js"; import { truncExcerptToWord } from "../helpers/excerpt.helpers.js"; const ExcerptRowAT = type({ excerpt: "string|null", "+": "reject", }).pipe((data) => ({ excerpt: data.excerpt ?? undefined, })); export async function loadExcerpt(siteContext, tracker, { lNodeId, fieldTypes, maxLength, }) { const excerptFieldTypes = []; for (const field of fieldTypes ?? []) { if (field.storedAs === "text" && field.renderAs === "html" && field.useAsExcerpt !== undefined) { const useAsExcerpt = field.useAsExcerpt; excerptFieldTypes.push({ ...field, useAsExcerpt, }); } } const orderedFieldTypes = excerptFieldTypes.sort((a, b) => a.useAsExcerpt - b.useAsExcerpt); for (const field of orderedFieldTypes) { const dbLanguage = field.localized ? lNodeId.language : dbAnyLanguage; const row = await siteContext .cn("PaFieldText as f") .select("f.excerpt") .where({ "f.field": field.name, "f.nodeId": lNodeId.nodeId, "f.language": dbLanguage, }) .first(); tracker.trackAccess(mainDbSchemaName, "PaFieldText", "read"); let excerpt = row ? ExcerptRowAT.assert(row).excerpt : undefined; excerpt = excerpt === "" ? undefined : excerpt; if (excerpt) { return maxLength === undefined ? excerpt : truncExcerptToWord(excerpt, maxLength); } } } //# sourceMappingURL=excerpt.queries.js.map