@paroicms/server
Version:
The ParoiCMS server
34 lines • 1.36 kB
JavaScript
import { loadRoutingClusterFromNode } from "../../connector/db-init/load-routing-cluster.queries.js";
import { getTypeNameOf } from "../node/node.queries.js";
import { loadRegularChildrenLanguagesOfNodeIds } from "./cluster-validation.js";
export async function loadRoutingClusterWithAnnotations(siteContext, rootNodeId) {
const typeName = await getTypeNameOf(siteContext, rootNodeId);
const cluster = await loadRoutingClusterFromNode(siteContext, {
nodeId: rootNodeId,
typeName,
});
const allNodeIds = collectNodeIds(cluster);
const childLanguagesMap = await loadRegularChildrenLanguagesOfNodeIds(siteContext.cn, siteContext.siteSchema, allNodeIds);
annotateCluster(cluster, childLanguagesMap);
return cluster;
}
function collectNodeIds(node) {
const nodeIds = [node.nodeId];
if (node.children) {
for (const child of Object.values(node.children)) {
nodeIds.push(...collectNodeIds(child));
}
}
return nodeIds;
}
function annotateCluster(node, childLanguagesMap) {
node.annotations = {
hasChildrenInLanguages: childLanguagesMap.get(node.nodeId),
};
if (node.children) {
for (const child of Object.values(node.children)) {
annotateCluster(child, childLanguagesMap);
}
}
}
//# sourceMappingURL=routing-cluster.queries.js.map