UNPKG

@neo4j/graphql

Version:

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

93 lines 3.67 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. */ Object.defineProperty(exports, "__esModule", { value: true }); exports.parseTopLevelOperationField = parseTopLevelOperationField; const is_interface_entity_1 = require("../../utils/is-interface-entity"); const is_union_entity_1 = require("../../utils/is-union-entity"); function parseTopLevelOperationField(field, context, entityAdapter) { if (!entityAdapter) { return "CUSTOM_CYPHER"; } if (context.fulltext) { return "FULLTEXT"; } if (context.vector) { return "VECTOR"; } if ((0, is_interface_entity_1.isInterfaceEntity)(entityAdapter)) { return parseInterfaceOperationField(field, context.schemaModel, entityAdapter); } if ((0, is_union_entity_1.isUnionEntity)(entityAdapter)) { return parseUnionOperationField(field, context.schemaModel, entityAdapter); } return parseOperationField(field, context.schemaModel, entityAdapter); } function parseOperationField(field, schemaModel, entityAdapter) { const rootTypeFieldNames = entityAdapter.operations.rootTypeFieldNames; if (schemaModel.operations.Query?.findAttribute(field) || schemaModel.operations.Mutation?.findAttribute(field)) { return "CUSTOM_CYPHER"; } switch (field) { case "_entities": case rootTypeFieldNames.read: return "READ"; case rootTypeFieldNames.connection: return "CONNECTION"; case rootTypeFieldNames.aggregate: return "AGGREGATE"; case rootTypeFieldNames.create: return "CREATE"; case rootTypeFieldNames.update: return "UPDATE"; case rootTypeFieldNames.delete: return "DELETE"; default: throw new Error(`Type does not support this operation: ${field}`); } } function parseInterfaceOperationField(field, schemaModel, entityAdapter) { const rootTypeFieldNames = entityAdapter.operations.rootTypeFieldNames; if (schemaModel.operations.Query?.findAttribute(field) || schemaModel.operations.Mutation?.findAttribute(field)) { return "CUSTOM_CYPHER"; } switch (field) { case rootTypeFieldNames.read: return "READ"; case rootTypeFieldNames.connection: return "CONNECTION"; case rootTypeFieldNames.aggregate: return "AGGREGATE"; default: throw new Error(`Interface does not support this operation: ${field}`); } } function parseUnionOperationField(field, schemaModel, entityAdapter) { const rootTypeFieldNames = entityAdapter.operations.rootTypeFieldNames; if (schemaModel.operations.Query?.findAttribute(field) || schemaModel.operations.Mutation?.findAttribute(field)) { return "CUSTOM_CYPHER"; } switch (field) { case rootTypeFieldNames.read: return "READ"; default: throw new Error(`Union does not support this operation: ${field}`); } } //# sourceMappingURL=parse-operation-fields.js.map