shyft
Version:
Model driven GraphQL API framework
131 lines (130 loc) • 6.75 kB
JavaScript
;
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;