@paroicms/server
Version:
The ParoiCMS server
32 lines • 1.56 kB
JavaScript
import { createNoTracker } from "@paroicms/internal-server-lib";
import { searchDocuments as searchDocumentsQuery } from "../admin-backend/lnode/lnode.queries.js";
import { getUrlOfDocument } from "../rendered-site/page-route/make-url.js";
import { loadMinimalDocumentInfo, loadRelatedTerms } from "./document-info.queries.js";
import { getLabelingFieldTypes } from "./programmatic-api-helpers.js";
export async function searchDocumentsProgrammaticApi(siteContext, input) {
const results = await searchDocumentsQuery(siteContext, {
language: input.language,
queryString: input.words.join(" "),
offset: input.offset ?? 0,
limit: input.limit ?? 20,
});
const items = [];
for (const item of results.items) {
const minimalInfo = await loadMinimalDocumentInfo(siteContext, {
nodeId: item.nodeId,
language: input.language,
});
const url = await getUrlOfDocument(siteContext, createNoTracker(), { nodeId: minimalInfo.nodeId, language: minimalInfo.language }, { returnUndef: true, absoluteUrl: true });
const labelingFields = getLabelingFieldTypes(siteContext, minimalInfo.typeName);
const relatedTerms = labelingFields.length > 0
? await loadRelatedTerms(siteContext, labelingFields, minimalInfo.nodeId, minimalInfo.language)
: {};
items.push({
...minimalInfo,
url,
relatedTerms,
});
}
return { items, total: results.total };
}
//# sourceMappingURL=search-documents-api.js.map