@paroicms/server
Version:
The ParoiCMS server
72 lines • 3.49 kB
JavaScript
import { parseLNodeId } from "@paroicms/public-anywhere-lib";
import { scope } from "arktype";
import { loadRoutingClusterAndParents } from "../../connector/db-init/load-routing-cluster.queries.js";
import { siteReadyGuard } from "../../graphql/graphql.types.js";
import { permissionGuard } from "../auth/authorization.helper.js";
import { getTypeNameOf } from "../node/node.queries.js";
import { deleteCluster, manageClusterRoutingDocuments } from "./cluster-management.js";
import { loadRoutingClusterWithAnnotations } from "./routing-cluster.queries.js";
const clusterManagementTypes = scope({
ClusterManagementRequest: {
rootTypeName: "string",
rootNodeId: "string",
"children?": "ClusterManagementNode[]",
"+": "reject",
},
ClusterManagementNode: {
typeName: "string",
"nodeId?": "string",
"action?": '"insert"|"delete"',
"children?": "ClusterManagementNode[]",
"+": "reject",
},
}).export();
const ClusterManagementRequestAT = clusterManagementTypes.ClusterManagementRequest;
export const routingClusterResolvers = {
Query: {
homeRoutingCluster: async (_parent, _args, { siteContext, httpContext }) => {
siteReadyGuard(siteContext);
await permissionGuard(siteContext, httpContext, "document.edit");
return JSON.stringify(siteContext.homeRoutingCluster);
},
routingClusterAndParents: async (_parent, { nodeId }, { siteContext, httpContext }) => {
siteReadyGuard(siteContext);
await permissionGuard(siteContext, httpContext, "document.edit");
const typeName = await getTypeNameOf(siteContext, nodeId);
const clusters = await loadRoutingClusterAndParents(siteContext, {
nodeId,
typeName,
});
return clusters.map((cluster) => JSON.stringify(cluster));
},
annotatedCluster: async (_parent, { rootNodeId }, { siteContext, httpContext }) => {
siteReadyGuard(siteContext);
await permissionGuard(siteContext, httpContext, "document.edit");
const cluster = await loadRoutingClusterWithAnnotations(siteContext, rootNodeId);
return JSON.stringify(cluster);
},
},
Mutation: {
manageClusterRoutingDocuments: async (_parent, { requestJson }, { siteContext, httpContext }) => {
siteReadyGuard(siteContext);
await permissionGuard(siteContext, httpContext, "document.edit");
const request = ClusterManagementRequestAT.assert(JSON.parse(requestJson));
await manageClusterRoutingDocuments(siteContext, request);
return true;
},
deleteCluster: async (_parent, { rootDocumentId }, { siteContext, httpContext }) => {
siteReadyGuard(siteContext);
await permissionGuard(siteContext, httpContext, "document.edit");
const rootLNode = parseLNodeId(rootDocumentId);
await deleteCluster(siteContext, rootLNode.nodeId, [rootLNode.language]);
return true;
},
deleteNodeAndClusters: async (_parent, { rootNodeId }, { siteContext, httpContext }) => {
siteReadyGuard(siteContext);
await permissionGuard(siteContext, httpContext, "document.edit");
await deleteCluster(siteContext, rootNodeId);
return true;
},
},
};
//# sourceMappingURL=routing-cluster.resolver.js.map