UNPKG

shyft

Version:

Model driven GraphQL API framework

131 lines (130 loc) 6.75 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.generateMutations = void 0; var graphql_1 = require("graphql"); var _ = __importStar(require("lodash")); var ProtocolGraphQL_1 = require("./ProtocolGraphQL"); var resolver_1 = require("./resolver"); var operation_1 = require("./operation"); var registry_1 = require("./registry"); var generateMutations = function (graphRegistry) { var protocolConfiguration = ProtocolGraphQL_1.ProtocolGraphQL.getProtocolConfiguration(); var mutations = {}; // generateInstanceUniquenessInputs(graphRegistry); _.forEach(graphRegistry.types, function (_a, typeName) { var type = _a.type, entity = _a.entity; if (!entity.getMutations) { return; } var entityMutations = entity.getMutations(); if (!entityMutations || entityMutations.length < 1) { return; } entityMutations.map(function (entityMutation) { var mutationName = protocolConfiguration.generateOperationTypeName(entity, entityMutation); var entityMutationInstanceInputType; if (entityMutation.attributes && entityMutation.attributes.length) { entityMutationInstanceInputType = operation_1.generateOperationInstanceInput(entity, entityMutation); } var mutationInputType = operation_1.generateOperationInput(entity, typeName, entityMutation, entityMutationInstanceInputType); var mutationOutputType = operation_1.generateOperationOutput(entity, typeName, type, entityMutation); mutations[mutationName] = { type: mutationOutputType, description: entityMutation.description, args: { input: { description: 'Input argument for this mutation', type: new graphql_1.GraphQLNonNull(mutationInputType), }, }, resolve: resolver_1.getMutationResolver({ entity: entity, entityMutation: entityMutation, typeName: typeName, nested: false, idResolver: function (_a) { var args = _a.args; return operation_1.extractIdFromNodeId(graphRegistry, entity.name, args.input.nodeId); }, }), }; if (entityMutation.isTypeCreate || entityMutation.isTypeUpdate) { var mutationNestedName = protocolConfiguration.generateOperationNestedTypeName(entity, entityMutation); var entityMutationInstanceNestedInputType = void 0; if (entityMutation.attributes && entityMutation.attributes.length) { entityMutationInstanceNestedInputType = operation_1.generateOperationInstanceNestedInput(entity, entityMutation, graphRegistry); } var mutationInputNestedType = operation_1.generateOperationNestedInput(entity, typeName, entityMutation, entityMutationInstanceNestedInputType); mutations[mutationNestedName] = { type: mutationOutputType, description: entityMutation.description, args: { input: { description: 'Input argument for this mutation', type: new graphql_1.GraphQLNonNull(mutationInputNestedType), }, }, resolve: resolver_1.getMutationResolver({ entity: entity, entityMutation: entityMutation, typeName: typeName, nested: true, idResolver: function (_a) { var args = _a.args; return operation_1.extractIdFromNodeId(graphRegistry, entity.name, args.input.nodeId); }, }), }; } if (entityMutation.needsInstance) { var primaryAttribute = entity.getPrimaryAttribute(); if (primaryAttribute) { var fieldName_1 = registry_1.getRegisteredEntityAttribute(entity.name, primaryAttribute.name).fieldName; var mutationByPrimaryAttributeInputType = operation_1.generateOperationByPrimaryAttributeInput(entity, typeName, entityMutation, entityMutationInstanceInputType, primaryAttribute); var mutationByPrimaryAttributeName = protocolConfiguration.generateOperationByPrimaryAttributeTypeName(entity, entityMutation, primaryAttribute); mutations[mutationByPrimaryAttributeName] = { type: mutationOutputType, description: entityMutation.description, args: { input: { description: 'Input argument for this mutation', type: new graphql_1.GraphQLNonNull(mutationByPrimaryAttributeInputType), }, }, resolve: resolver_1.getMutationResolver({ entity: entity, entityMutation: entityMutation, typeName: typeName, nested: false, idResolver: function (_a) { var args = _a.args; return args.input[fieldName_1]; }, }), }; } } }); }); return mutations; }; exports.generateMutations = generateMutations;