@neo4j/graphql
Version:
A GraphQL to Cypher query execution layer for Neo4j and JavaScript GraphQL implementations
68 lines • 3.07 kB
JavaScript
;
/*
* 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