@aws-amplify/graphql-schema-generator
Version:
Amplify GraphQL schema generator
62 lines • 3.51 kB
JavaScript
;
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