UNPKG

@aws-amplify/graphql-model-transformer

Version:
129 lines 6.45 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.makeMutationConditionInput = exports.makeCreateInputField = exports.makeDeleteInputField = exports.makeUpdateInputField = void 0; const graphql_transformer_common_1 = require("graphql-transformer-common"); const graphql_transformer_core_1 = require("@aws-amplify/graphql-transformer-core"); const common_1 = require("./common"); const makeUpdateInputField = (obj, modelDirectiveConfig, knownModelTypes, document, isSyncEnabled) => { var _a; const objectWrapped = new graphql_transformer_core_1.ObjectDefinitionWrapper(obj); const typeName = objectWrapped.name; const name = (0, graphql_transformer_common_1.toPascalCase)(['Update', typeName, 'Input']); const hasIdField = objectWrapped.hasField('id'); const fieldsToRemove = objectWrapped .fields.filter((field) => { if (knownModelTypes.has(field.getTypeName())) { return true; } return false; }) .map((field) => field.name); const objectTypeDefinition = { ...obj, fields: (_a = obj.fields) === null || _a === void 0 ? void 0 : _a.filter((f) => !fieldsToRemove.includes(f.name.value)), }; const input = graphql_transformer_core_1.InputObjectDefinitionWrapper.fromObject(name, objectTypeDefinition, document); input.fields.forEach((f) => f.makeNullable()); if (!hasIdField) { input.addField(graphql_transformer_core_1.InputFieldWrapper.create('id', 'ID', false)); } else { const idField = input.fields.find((f) => f.name === 'id'); if (idField) { idField.makeNonNullable(); } } Object.values((modelDirectiveConfig === null || modelDirectiveConfig === void 0 ? void 0 : modelDirectiveConfig.timestamps) || {}).forEach((timeStampFieldName) => { if (input.hasField(timeStampFieldName)) { const timestampField = input.getField(timeStampFieldName); if (['String', 'AWSDateTime'].includes(timestampField.getTypeName())) { timestampField.makeNullable(); } } }); if (isSyncEnabled) { input.addField(graphql_transformer_core_1.InputFieldWrapper.create('_version', 'Int', true)); } return input.serialize(); }; exports.makeUpdateInputField = makeUpdateInputField; const makeDeleteInputField = (type, isSyncEnabled) => { const name = (0, graphql_transformer_common_1.toPascalCase)(['Delete', type.name.value, 'input']); const inputField = graphql_transformer_core_1.InputObjectDefinitionWrapper.create(name); const idField = graphql_transformer_core_1.InputFieldWrapper.create('id', 'ID', false, false); inputField.addField(idField); if (isSyncEnabled) { inputField.addField(graphql_transformer_core_1.InputFieldWrapper.create('_version', 'Int', true)); } return inputField.serialize(); }; exports.makeDeleteInputField = makeDeleteInputField; const makeCreateInputField = (obj, modelDirectiveConfig, knownModelTypes, document, isSyncEnabled) => { var _a; const objectWrapped = new graphql_transformer_core_1.ObjectDefinitionWrapper(obj); const typeName = objectWrapped.name; const name = graphql_transformer_common_1.ModelResourceIDs.ModelCreateInputObjectName(typeName); const idFieldName = 'id'; const hasIdField = objectWrapped.hasField(idFieldName); let shouldAutogenerateIdField = false; if (hasIdField) { const idField = objectWrapped.getField(idFieldName); const idBaseType = (0, graphql_transformer_common_1.getBaseType)(idField.type); shouldAutogenerateIdField = idBaseType === 'ID' || idBaseType === 'String'; } const fieldsToRemove = objectWrapped .fields.filter((field) => { if (knownModelTypes.has(field.getTypeName())) { return true; } return false; }) .map((field) => field.name); const objectTypeDefinition = { ...obj, fields: (_a = obj.fields) === null || _a === void 0 ? void 0 : _a.filter((f) => !fieldsToRemove.includes(f.name.value)), }; const input = graphql_transformer_core_1.InputObjectDefinitionWrapper.fromObject(name, objectTypeDefinition, document); if (!hasIdField) { input.addField(graphql_transformer_core_1.InputFieldWrapper.create('id', 'ID', true)); } else { const idField = input.fields.find((f) => f.name === 'id'); if (idField && shouldAutogenerateIdField) { idField.makeNullable(); } } Object.values((modelDirectiveConfig === null || modelDirectiveConfig === void 0 ? void 0 : modelDirectiveConfig.timestamps) || {}).forEach((timeStampFieldName) => { if (input.hasField(timeStampFieldName)) { const timestampField = input.getField(timeStampFieldName); if (['String', 'AWSDateTime'].includes(timestampField.getTypeName())) { timestampField.makeNullable(); } } }); if (isSyncEnabled) { input.addField(graphql_transformer_core_1.InputFieldWrapper.create('_version', 'Int', true)); } return input.serialize(); }; exports.makeCreateInputField = makeCreateInputField; const makeMutationConditionInput = (ctx, name, object, modelDirectiveConfig) => { const input = (0, common_1.makeConditionFilterInput)(ctx, name, object); const idField = input.fields.find((f) => f.name === 'id' && f.getTypeName() === 'ModelIDInput'); if (idField) { input.removeField(idField); } if ((0, graphql_transformer_core_1.isDynamoDbModel)(ctx, object.name.value)) { if (!((modelDirectiveConfig === null || modelDirectiveConfig === void 0 ? void 0 : modelDirectiveConfig.timestamps) === null)) { Object.values({ createdAt: 'createdAt', updatedAt: 'updatedAt', ...((modelDirectiveConfig === null || modelDirectiveConfig === void 0 ? void 0 : modelDirectiveConfig.timestamps) || {}) }).forEach((timeStampFieldName) => { if (!!timeStampFieldName && !input.hasField(timeStampFieldName)) { const field = graphql_transformer_core_1.InputFieldWrapper.create(timeStampFieldName, 'ModelStringInput', true); input.addField(field); } }); } } return input.serialize(); }; exports.makeMutationConditionInput = makeMutationConditionInput; //# sourceMappingURL=mutation.js.map