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