UNPKG

@paroicms/server

Version:
72 lines 3.49 kB
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