UNPKG

@aws-amplify/graphql-schema-generator

Version:
62 lines 3.51 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.constructRDSGlobalAmplifyInput = exports.readRDSGlobalAmplifyInput = exports.constructDefaultGlobalAmplifyInput = void 0; const graphql_1 = require("graphql"); const graphql_transformer_core_1 = require("@aws-amplify/graphql-transformer-core"); const getGlobalAmplifyInputEntries = (dataSourceType = graphql_transformer_core_1.ImportedRDSType.MYSQL, includeAuthRule = true, authDocLink) => { const inputs = [ { name: 'engine', type: 'String', default: dataSourceType, }, ]; if (includeAuthRule) { inputs.push({ name: 'globalAuthRule', type: 'AuthRule', default: '{ allow: public }', comment: 'This "input" configures a global authorization rule to enable public access to all models in this schema.' + (!!authDocLink ? ` Learn more about authorization rules here:${authDocLink}` : ''), }); } return inputs; }; const constructDefaultGlobalAmplifyInput = (dataSourceType, includeAuthRule = true, authDocLink) => { const inputs = getGlobalAmplifyInputEntries(dataSourceType, includeAuthRule, authDocLink); const inputsString = inputs.reduce((acc, input) => acc + ` ${input.name}: ${input.type} = ${input.type === 'String' ? '"' + input.default + '"' : input.default} ${input.comment ? '# ' + input.comment : ''} \n`, ''); return `input AMPLIFY {\n${inputsString}}\n`; }; exports.constructDefaultGlobalAmplifyInput = constructDefaultGlobalAmplifyInput; const readRDSGlobalAmplifyInput = (schemaDocument) => { if (!schemaDocument) { return; } const inputNode = schemaDocument.definitions.find((definition) => definition.kind === 'InputObjectTypeDefinition' && definition.name && definition.name.value === 'AMPLIFY'); if (inputNode) { return inputNode; } }; exports.readRDSGlobalAmplifyInput = readRDSGlobalAmplifyInput; const constructRDSGlobalAmplifyInput = (config, schemaDocument) => { var _a; const existingInputNode = (0, exports.readRDSGlobalAmplifyInput)(schemaDocument); if (existingInputNode && (existingInputNode === null || existingInputNode === void 0 ? void 0 : existingInputNode.fields) && ((_a = existingInputNode === null || existingInputNode === void 0 ? void 0 : existingInputNode.fields) === null || _a === void 0 ? void 0 : _a.length) > 0) { const expectedInputs = getGlobalAmplifyInputEntries(graphql_transformer_core_1.ImportedRDSType.MYSQL).map((item) => item.name); expectedInputs.forEach((input) => { var _a; const inputNodeField = (_a = existingInputNode === null || existingInputNode === void 0 ? void 0 : existingInputNode.fields) === null || _a === void 0 ? void 0 : _a.find((field) => { var _a; return ((_a = field === null || field === void 0 ? void 0 : field.name) === null || _a === void 0 ? void 0 : _a.value) === input; }); if (inputNodeField && config[input]) { inputNodeField['defaultValue']['value'] = config[input]; } }); return (0, graphql_1.print)(existingInputNode); } else { const engine = config['engine'] || graphql_transformer_core_1.ImportedRDSType.MYSQL; return (0, exports.constructDefaultGlobalAmplifyInput)(engine, false); } }; exports.constructRDSGlobalAmplifyInput = constructRDSGlobalAmplifyInput; //# sourceMappingURL=input.js.map