UNPKG

@neo4j/graphql

Version:

A GraphQL to Cypher query execution layer for Neo4j and JavaScript GraphQL implementations

68 lines 3.07 kB
"use strict"; /* * Copyright (c) "Neo4j" * Neo4j Sweden AB [http://neo4j.com] * * This file is part of Neo4j. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = translateCreate; const debug_1 = __importDefault(require("debug")); const constants_1 = require("../constants"); const utils_1 = require("../utils/utils"); const is_unwind_create_supported_1 = require("./queryAST/factory/parsers/is-unwind-create-supported"); const QueryASTFactory_1 = require("./queryAST/factory/QueryASTFactory"); const callback_bucket_1 = require("./queryAST/utils/callback-bucket"); const unwind_create_1 = __importDefault(require("./unwind-create")); const build_clause_1 = require("./utils/build-clause"); const debug = (0, debug_1.default)(constants_1.DEBUG_TRANSLATE); async function translateUsingQueryAST({ context, entityAdapter, resolveTree, varName, }) { const operationsTreeFactory = new QueryASTFactory_1.QueryASTFactory(context.schemaModel); if (!entityAdapter) { throw new Error("Entity not found"); } const callbackBucket = new callback_bucket_1.CallbackBucket(context); const operationsTree = operationsTreeFactory.createMutationAST({ resolveTree, entityAdapter, context, varName, callbackBucket, }); debug(operationsTree.print()); await callbackBucket.resolveCallbacks(); const clause = operationsTree.build(context, varName); return (0, build_clause_1.buildClause)(clause, { context }); } async function translateCreate({ context, node, }) { const { resolveTree } = context; const entityAdapter = context.schemaModel.getConcreteEntityAdapter(node.name); if (!entityAdapter) { throw new Error(`Transpilation error: ${node.name} is not a concrete entity`); } const mutationInputs = resolveTree.args.input; const { isSupported, reason } = (0, is_unwind_create_supported_1.isUnwindCreateSupported)(entityAdapter, (0, utils_1.asArray)(mutationInputs), context); if (isSupported) { return (0, unwind_create_1.default)({ context, entityAdapter }); } debug(`Unwind create optimization not supported: ${reason}`); const varName = "this"; const result = await translateUsingQueryAST({ context, entityAdapter, resolveTree, varName }); return result; } //# sourceMappingURL=translate-create.js.map