@paroicms/server
Version:
The ParoiCMS server
42 lines • 1.59 kB
JavaScript
import { getNodeTypeByName } from "@paroicms/internal-anywhere-lib";
import { createNode } from "../../connector/db-init/init-node-queries.js";
import { createPartNode } from "./part-node.queries.js";
export async function autoCreatePartFieldParts(siteSchema, options) {
const { parentNodeId, typeName, language, documentNodeId, tx } = options;
const visitedTypeNames = options.visitedTypeNames ?? new Set();
if (visitedTypeNames.has(typeName))
return;
visitedTypeNames.add(typeName);
const nodeType = getNodeTypeByName(siteSchema, typeName);
const fields = nodeType.fields ?? [];
const partFieldTypes = fields.filter((f) => f.storedAs === "partField");
for (const field of partFieldTypes) {
const listName = `_pf:${field.name}`;
const node = await createNode(siteSchema, tx, {
parentId: parentNodeId,
typeName: field.partType,
});
await createPartNode(tx, {
nodeId: node.id,
listName,
documentNodeId,
isOrdered: false,
lastOrderNum: undefined,
});
await tx("PaLNode").insert({
language,
nodeId: node.id,
ready: true,
updatedAt: tx.raw("current_timestamp"),
});
await autoCreatePartFieldParts(siteSchema, {
parentNodeId: node.id,
typeName: field.partType,
language,
documentNodeId,
tx,
visitedTypeNames,
});
}
}
//# sourceMappingURL=auto-create-part-field-parts.js.map