UNPKG

@neo4j/graphql

Version:

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

52 lines 2.04 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.ErrorIfSingleRelationships = ErrorIfSingleRelationships; const graphql_1 = require("graphql"); const directives_1 = require("../../../graphql/directives"); const document_validation_error_1 = require("./utils/document-validation-error"); function ErrorIfSingleRelationships(context) { return { FieldDefinition(field) { let isRelationship = false; for (const directive of field.directives ?? []) { if (directive.name.value === directives_1.relationshipDirective.name) { isRelationship = true; } } const isList = Boolean(getListTypeNode(field)); if (isRelationship && !isList) { context.reportError((0, document_validation_error_1.createGraphQLError)({ errorMsg: `Using @relationship directive on a non-list property "${field.name.value}" is not supported.`, })); } }, }; } function getListTypeNode(definition) { if (definition.type.kind === graphql_1.Kind.NON_NULL_TYPE) { return getListTypeNode(definition.type); } if (definition.type.kind === graphql_1.Kind.LIST_TYPE) { return definition.type; } return; } //# sourceMappingURL=error-single-relationships.js.map