UNPKG

@neo4j/graphql

Version:

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

52 lines 2.83 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getRelationshipPropertiesTypeDescription = getRelationshipPropertiesTypeDescription; exports.withObjectType = withObjectType; const graphql_1 = require("graphql"); const InterfaceEntity_1 = require("../../schema-model/entity/InterfaceEntity"); const RelationshipAdapter_1 = require("../../schema-model/relationship/model-adapters/RelationshipAdapter"); const to_compose_1 = require("../to-compose"); function getRelationshipPropertiesTypeDescription({ relationshipAdapter, propertiesObjectType, }) { if (propertiesObjectType) { return [ propertiesObjectType.getDescription(), `* ${relationshipAdapter.source.name}.${relationshipAdapter.name}`, ].join("\n"); } return `The edge properties for the following fields:\n* ${relationshipAdapter.source.name}.${relationshipAdapter.name}`; } function withObjectType({ entityAdapter, userDefinedFieldDirectives, userDefinedObjectDirectives, composer, }) { if (entityAdapter instanceof RelationshipAdapter_1.RelationshipAdapter) { // @relationshipProperties const objectComposeFields = (0, to_compose_1.attributeAdapterToComposeFields)(Array.from(entityAdapter.attributes.values()), userDefinedFieldDirectives); const composeObject = composer.createObjectTC({ name: entityAdapter.propertiesTypeName, // this is checked one layer above in execution fields: objectComposeFields, directives: (0, to_compose_1.graphqlDirectivesToCompose)(userDefinedObjectDirectives), description: getRelationshipPropertiesTypeDescription({ relationshipAdapter: entityAdapter }), }); return composeObject; } const nodeFields = (0, to_compose_1.attributeAdapterToComposeFields)(entityAdapter.objectFields, userDefinedFieldDirectives); const composeNode = composer.createObjectTC({ name: entityAdapter.name, fields: nodeFields, description: entityAdapter.description, directives: (0, to_compose_1.graphqlDirectivesToCompose)(userDefinedObjectDirectives), interfaces: entityAdapter.compositeEntities.filter((e) => e instanceof InterfaceEntity_1.InterfaceEntity).map((e) => e.name), }); // TODO: maybe split this global node logic? if (entityAdapter.isGlobalNode()) { composeNode.setField("id", { type: new graphql_1.GraphQLNonNull(graphql_1.GraphQLID), resolve: (src) => { const field = entityAdapter.globalIdField.name; const value = src[field]; return entityAdapter.toGlobalId(value.toString()); }, }); composeNode.addInterface("Node"); } return composeNode; } //# sourceMappingURL=object-type.js.map