@aws-amplify/graphql-model-transformer
Version:
Amplify graphql @model transformer
221 lines • 26.9 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.generateApplyDefaultsToInputTemplate = exports.generateUpdateInitSlotTemplate = exports.generateDeleteRequestTemplate = exports.generateCreateInitSlotTemplate = exports.generateCreateRequestTemplate = exports.generateUpdateRequestTemplate = void 0;
const graphql_mapping_template_1 = require("graphql-mapping-template");
const graphql_transformer_common_1 = require("graphql-transformer-common");
const common_1 = require("../common");
const common_2 = require("./common");
const generateUpdateRequestTemplate = (modelName, isSyncEnabled) => {
const objectKeyVariable = 'ctx.stash.metadata.modelObjectKey';
const keyFields = [(0, graphql_mapping_template_1.str)('id')];
if (isSyncEnabled) {
keyFields.push((0, graphql_mapping_template_1.str)('_version'));
keyFields.push((0, graphql_mapping_template_1.str)('_deleted'));
keyFields.push((0, graphql_mapping_template_1.str)('_lastChangedAt'));
}
const statements = [
graphql_transformer_common_1.setArgs,
(0, graphql_mapping_template_1.comment)('Set the default values to put request'),
(0, graphql_mapping_template_1.set)((0, graphql_mapping_template_1.ref)('mergedValues'), (0, graphql_mapping_template_1.methodCall)((0, graphql_mapping_template_1.ref)('util.defaultIfNull'), (0, graphql_mapping_template_1.ref)('ctx.stash.defaultValues'), (0, graphql_mapping_template_1.obj)({}))),
(0, graphql_mapping_template_1.comment)('copy the values from input'),
(0, graphql_mapping_template_1.qref)((0, graphql_mapping_template_1.methodCall)((0, graphql_mapping_template_1.ref)('mergedValues.putAll'), (0, graphql_mapping_template_1.methodCall)((0, graphql_mapping_template_1.ref)('util.defaultIfNull'), (0, graphql_mapping_template_1.ref)('args.input'), (0, graphql_mapping_template_1.obj)({})))),
(0, graphql_mapping_template_1.comment)('set the typename'),
(0, graphql_mapping_template_1.comment)('Initialize the vars for creating ddb expression'),
(0, graphql_mapping_template_1.set)((0, graphql_mapping_template_1.ref)('expNames'), (0, graphql_mapping_template_1.obj)({})),
(0, graphql_mapping_template_1.set)((0, graphql_mapping_template_1.ref)('expValues'), (0, graphql_mapping_template_1.obj)({})),
(0, graphql_mapping_template_1.set)((0, graphql_mapping_template_1.ref)('expSet'), (0, graphql_mapping_template_1.obj)({})),
(0, graphql_mapping_template_1.set)((0, graphql_mapping_template_1.ref)('expAdd'), (0, graphql_mapping_template_1.obj)({})),
(0, graphql_mapping_template_1.set)((0, graphql_mapping_template_1.ref)('expRemove'), (0, graphql_mapping_template_1.list)([])),
(0, graphql_mapping_template_1.ifElse)((0, graphql_mapping_template_1.ref)(objectKeyVariable), (0, graphql_mapping_template_1.set)((0, graphql_mapping_template_1.ref)('Key'), (0, graphql_mapping_template_1.ref)(objectKeyVariable)), (0, graphql_mapping_template_1.set)((0, graphql_mapping_template_1.ref)('Key'), (0, graphql_mapping_template_1.obj)({ id: (0, graphql_mapping_template_1.methodCall)((0, graphql_mapping_template_1.ref)('util.dynamodb.toDynamoDB'), (0, graphql_mapping_template_1.ref)('args.input.id')) }))),
(0, graphql_mapping_template_1.comment)('Model key'),
(0, graphql_mapping_template_1.ifElse)((0, graphql_mapping_template_1.ref)(objectKeyVariable), (0, graphql_mapping_template_1.compoundExpression)([
(0, graphql_mapping_template_1.set)((0, graphql_mapping_template_1.ref)('keyFields'), isSyncEnabled ? (0, graphql_mapping_template_1.list)([(0, graphql_mapping_template_1.str)('_version'), (0, graphql_mapping_template_1.str)('_deleted'), (0, graphql_mapping_template_1.str)('_lastChangedAt')]) : (0, graphql_mapping_template_1.list)([])),
(0, graphql_mapping_template_1.forEach)((0, graphql_mapping_template_1.ref)('entry'), (0, graphql_mapping_template_1.ref)(`${objectKeyVariable}.entrySet()`), [(0, graphql_mapping_template_1.qref)('$keyFields.add("$entry.key")')]),
]), (0, graphql_mapping_template_1.set)((0, graphql_mapping_template_1.ref)('keyFields'), (0, graphql_mapping_template_1.list)(keyFields))),
(0, graphql_mapping_template_1.forEach)((0, graphql_mapping_template_1.ref)('entry'), (0, graphql_mapping_template_1.ref)('util.map.copyAndRemoveAllKeys($mergedValues, $keyFields).entrySet()'), [
(0, graphql_mapping_template_1.ifElse)((0, graphql_mapping_template_1.raw)('!$util.isNull($ctx.stash.metadata.dynamodbNameOverrideMap) && $ctx.stash.metadata.dynamodbNameOverrideMap.containsKey("$entry.key")'), (0, graphql_mapping_template_1.set)((0, graphql_mapping_template_1.ref)('entryKeyAttributeName'), (0, graphql_mapping_template_1.raw)('$ctx.stash.metadata.dynamodbNameOverrideMap.get("$entry.key")')), (0, graphql_mapping_template_1.set)((0, graphql_mapping_template_1.ref)('entryKeyAttributeName'), (0, graphql_mapping_template_1.raw)('$entry.key'))),
(0, graphql_mapping_template_1.ifElse)((0, graphql_mapping_template_1.ref)('util.isNull($entry.value)'), (0, graphql_mapping_template_1.compoundExpression)([
(0, graphql_mapping_template_1.set)((0, graphql_mapping_template_1.ref)('discard'), (0, graphql_mapping_template_1.ref)('expRemove.add("#$entryKeyAttributeName")')),
(0, graphql_mapping_template_1.qref)('$expNames.put("#$entryKeyAttributeName", "$entry.key")'),
]), (0, graphql_mapping_template_1.compoundExpression)([
(0, graphql_mapping_template_1.qref)('$expSet.put("#$entryKeyAttributeName", ":$entryKeyAttributeName")'),
(0, graphql_mapping_template_1.qref)('$expNames.put("#$entryKeyAttributeName", "$entry.key")'),
(0, graphql_mapping_template_1.qref)('$expValues.put(":$entryKeyAttributeName", $util.dynamodb.toDynamoDB($entry.value))'),
])),
]),
(0, graphql_mapping_template_1.set)((0, graphql_mapping_template_1.ref)('expression'), (0, graphql_mapping_template_1.str)('')),
(0, graphql_mapping_template_1.iff)((0, graphql_mapping_template_1.raw)('!$expSet.isEmpty()'), (0, graphql_mapping_template_1.compoundExpression)([
(0, graphql_mapping_template_1.set)((0, graphql_mapping_template_1.ref)('expression'), (0, graphql_mapping_template_1.str)('SET')),
(0, graphql_mapping_template_1.forEach)((0, graphql_mapping_template_1.ref)('entry'), (0, graphql_mapping_template_1.ref)('expSet.entrySet()'), [
(0, graphql_mapping_template_1.set)((0, graphql_mapping_template_1.ref)('expression'), (0, graphql_mapping_template_1.str)('$expression $entry.key = $entry.value')),
(0, graphql_mapping_template_1.iff)((0, graphql_mapping_template_1.ref)('foreach.hasNext()'), (0, graphql_mapping_template_1.set)((0, graphql_mapping_template_1.ref)('expression'), (0, graphql_mapping_template_1.str)('$expression,'))),
]),
])),
(0, graphql_mapping_template_1.iff)((0, graphql_mapping_template_1.raw)('!$expAdd.isEmpty()'), (0, graphql_mapping_template_1.compoundExpression)([
(0, graphql_mapping_template_1.set)((0, graphql_mapping_template_1.ref)('expression'), (0, graphql_mapping_template_1.str)('$expression ADD')),
(0, graphql_mapping_template_1.forEach)((0, graphql_mapping_template_1.ref)('entry'), (0, graphql_mapping_template_1.ref)('expAdd.entrySet()'), [
(0, graphql_mapping_template_1.set)((0, graphql_mapping_template_1.ref)('expression'), (0, graphql_mapping_template_1.str)('$expression $entry.key $entry.value')),
(0, graphql_mapping_template_1.iff)((0, graphql_mapping_template_1.ref)('foreach.hasNext()'), (0, graphql_mapping_template_1.set)((0, graphql_mapping_template_1.ref)('expression'), (0, graphql_mapping_template_1.str)('$expression,'))),
]),
])),
(0, graphql_mapping_template_1.iff)((0, graphql_mapping_template_1.raw)('!$expRemove.isEmpty()'), (0, graphql_mapping_template_1.compoundExpression)([
(0, graphql_mapping_template_1.set)((0, graphql_mapping_template_1.ref)('expression'), (0, graphql_mapping_template_1.str)('$expression REMOVE')),
(0, graphql_mapping_template_1.forEach)((0, graphql_mapping_template_1.ref)('entry'), (0, graphql_mapping_template_1.ref)('expRemove'), [
(0, graphql_mapping_template_1.set)((0, graphql_mapping_template_1.ref)('expression'), (0, graphql_mapping_template_1.str)('$expression $entry')),
(0, graphql_mapping_template_1.iff)((0, graphql_mapping_template_1.ref)('foreach.hasNext()'), (0, graphql_mapping_template_1.set)((0, graphql_mapping_template_1.ref)('expression'), (0, graphql_mapping_template_1.str)('$expression,'))),
]),
])),
(0, graphql_mapping_template_1.set)((0, graphql_mapping_template_1.ref)('update'), (0, graphql_mapping_template_1.obj)({})),
(0, graphql_mapping_template_1.qref)('$update.put("expression", "$expression")'),
(0, graphql_mapping_template_1.iff)((0, graphql_mapping_template_1.raw)('!$expNames.isEmpty()'), (0, graphql_mapping_template_1.qref)('$update.put("expressionNames", $expNames)')),
(0, graphql_mapping_template_1.iff)((0, graphql_mapping_template_1.raw)('!$expValues.isEmpty()'), (0, graphql_mapping_template_1.qref)('$update.put("expressionValues", $expValues)')),
...generateKeyConditionTemplate(true),
(0, graphql_mapping_template_1.iff)((0, graphql_mapping_template_1.ref)('args.condition'), (0, graphql_mapping_template_1.qref)((0, graphql_mapping_template_1.methodCall)((0, graphql_mapping_template_1.ref)('ctx.stash.conditions.add'), (0, graphql_mapping_template_1.ref)('args.condition')))),
(0, common_2.generateConditionSlot)('ctx.stash.conditions', 'Conditions'),
(0, graphql_mapping_template_1.set)((0, graphql_mapping_template_1.ref)('UpdateItem'), (0, graphql_mapping_template_1.obj)({
version: (0, graphql_mapping_template_1.str)('2018-05-29'),
operation: (0, graphql_mapping_template_1.str)('UpdateItem'),
key: (0, graphql_mapping_template_1.ref)('Key'),
update: (0, graphql_mapping_template_1.ref)('update'),
...(isSyncEnabled && { _version: (0, graphql_mapping_template_1.ref)('util.defaultIfNull($args.input["_version"], 0)') }),
})),
(0, graphql_mapping_template_1.iff)((0, graphql_mapping_template_1.ref)('Conditions'), (0, graphql_mapping_template_1.compoundExpression)([
(0, graphql_mapping_template_1.iff)((0, graphql_mapping_template_1.ref)('keyConditionExprNames'), (0, graphql_mapping_template_1.qref)((0, graphql_mapping_template_1.methodCall)((0, graphql_mapping_template_1.ref)('Conditions.expressionNames.putAll'), (0, graphql_mapping_template_1.ref)('keyConditionExprNames')))),
(0, graphql_mapping_template_1.qref)((0, graphql_mapping_template_1.methodCall)((0, graphql_mapping_template_1.ref)('UpdateItem.put'), (0, graphql_mapping_template_1.str)('condition'), (0, graphql_mapping_template_1.ref)('Conditions'))),
])),
(0, graphql_mapping_template_1.toJson)((0, graphql_mapping_template_1.ref)('UpdateItem')),
];
return (0, graphql_mapping_template_1.printBlock)(`Mutation Update resolver`)((0, graphql_mapping_template_1.compoundExpression)(statements));
};
exports.generateUpdateRequestTemplate = generateUpdateRequestTemplate;
const generateCreateRequestTemplate = (modelName, modelIndexFields) => {
const statements = [
graphql_transformer_common_1.setArgs,
(0, graphql_mapping_template_1.comment)('Set the default values to put request'),
(0, graphql_mapping_template_1.set)((0, graphql_mapping_template_1.ref)('mergedValues'), (0, graphql_mapping_template_1.methodCall)((0, graphql_mapping_template_1.ref)('util.defaultIfNull'), (0, graphql_mapping_template_1.ref)('ctx.stash.defaultValues'), (0, graphql_mapping_template_1.obj)({}))),
(0, graphql_mapping_template_1.comment)('copy the values from input'),
(0, graphql_mapping_template_1.qref)((0, graphql_mapping_template_1.methodCall)((0, graphql_mapping_template_1.ref)('mergedValues.putAll'), (0, graphql_mapping_template_1.methodCall)((0, graphql_mapping_template_1.ref)('util.defaultIfNull'), (0, graphql_mapping_template_1.ref)('args.input'), (0, graphql_mapping_template_1.obj)({})))),
(0, graphql_mapping_template_1.comment)('set the typename'),
(0, graphql_mapping_template_1.qref)((0, graphql_mapping_template_1.methodCall)((0, graphql_mapping_template_1.ref)('mergedValues.put'), (0, graphql_mapping_template_1.str)('__typename'), (0, graphql_mapping_template_1.str)(modelName))),
...(modelIndexFields.length
? [
(0, graphql_mapping_template_1.set)((0, graphql_mapping_template_1.ref)('nullIndexFields'), (0, graphql_mapping_template_1.list)([])),
(0, graphql_mapping_template_1.set)((0, graphql_mapping_template_1.ref)('indexFields'), (0, graphql_mapping_template_1.list)(modelIndexFields.map((it) => (0, graphql_mapping_template_1.str)(it)))),
(0, graphql_mapping_template_1.forEach)((0, graphql_mapping_template_1.ref)('entry'), (0, graphql_mapping_template_1.ref)('util.map.copyAndRetainAllKeys($mergedValues, $indexFields).entrySet()'), [
(0, graphql_mapping_template_1.iff)((0, graphql_mapping_template_1.raw)('$util.isNull($entry.value)'), (0, graphql_mapping_template_1.qref)((0, graphql_mapping_template_1.methodCall)((0, graphql_mapping_template_1.ref)('nullIndexFields.add'), (0, graphql_mapping_template_1.ref)('entry.key')))),
]),
(0, graphql_mapping_template_1.set)((0, graphql_mapping_template_1.ref)('mergedValues'), (0, graphql_mapping_template_1.ref)('util.map.copyAndRemoveAllKeys($mergedValues, $nullIndexFields)')),
]
: []),
(0, graphql_mapping_template_1.set)((0, graphql_mapping_template_1.ref)('PutObject'), (0, graphql_mapping_template_1.obj)({
version: (0, graphql_mapping_template_1.str)('2018-05-29'),
operation: (0, graphql_mapping_template_1.str)('PutItem'),
attributeValues: (0, graphql_mapping_template_1.methodCall)((0, graphql_mapping_template_1.ref)('util.dynamodb.toMapValues'), (0, graphql_mapping_template_1.ref)('mergedValues')),
condition: (0, graphql_mapping_template_1.ref)('condition'),
})),
(0, graphql_mapping_template_1.iff)((0, graphql_mapping_template_1.ref)('args.condition'), (0, graphql_mapping_template_1.qref)((0, graphql_mapping_template_1.methodCall)((0, graphql_mapping_template_1.ref)('ctx.stash.conditions.add'), (0, graphql_mapping_template_1.ref)('args.condition')))),
...generateKeyConditionTemplate(false),
(0, common_2.generateConditionSlot)('ctx.stash.conditions', 'Conditions'),
(0, graphql_mapping_template_1.iff)((0, graphql_mapping_template_1.ref)('Conditions'), (0, graphql_mapping_template_1.compoundExpression)([
(0, graphql_mapping_template_1.iff)((0, graphql_mapping_template_1.ref)('keyConditionExprNames'), (0, graphql_mapping_template_1.qref)((0, graphql_mapping_template_1.methodCall)((0, graphql_mapping_template_1.ref)('Conditions.expressionNames.putAll'), (0, graphql_mapping_template_1.ref)('keyConditionExprNames')))),
(0, graphql_mapping_template_1.qref)((0, graphql_mapping_template_1.methodCall)((0, graphql_mapping_template_1.ref)('PutObject.put'), (0, graphql_mapping_template_1.str)('condition'), (0, graphql_mapping_template_1.ref)('Conditions'))),
])),
(0, graphql_mapping_template_1.ifElse)((0, graphql_mapping_template_1.ref)('ctx.stash.metadata.modelObjectKey'), (0, graphql_mapping_template_1.qref)((0, graphql_mapping_template_1.methodCall)((0, graphql_mapping_template_1.ref)('PutObject.put'), (0, graphql_mapping_template_1.str)('key'), (0, graphql_mapping_template_1.ref)('ctx.stash.metadata.modelObjectKey'))), (0, graphql_mapping_template_1.compoundExpression)([
(0, graphql_mapping_template_1.set)((0, graphql_mapping_template_1.ref)('Key'), (0, graphql_mapping_template_1.obj)({
id: (0, graphql_mapping_template_1.methodCall)((0, graphql_mapping_template_1.ref)('util.dynamodb.toDynamoDB'), (0, graphql_mapping_template_1.ref)('mergedValues.id')),
})),
(0, graphql_mapping_template_1.qref)((0, graphql_mapping_template_1.methodCall)((0, graphql_mapping_template_1.ref)('PutObject.put'), (0, graphql_mapping_template_1.str)('key'), (0, graphql_mapping_template_1.ref)('Key'))),
])),
(0, graphql_mapping_template_1.toJson)((0, graphql_mapping_template_1.ref)('PutObject')),
];
return (0, graphql_mapping_template_1.printBlock)('Create Request template')((0, graphql_mapping_template_1.compoundExpression)(statements));
};
exports.generateCreateRequestTemplate = generateCreateRequestTemplate;
const generateCreateInitSlotTemplate = (modelConfig, initializeIdField) => {
const statements = [
(0, graphql_mapping_template_1.qref)((0, graphql_mapping_template_1.methodCall)((0, graphql_mapping_template_1.ref)('ctx.stash.put'), (0, graphql_mapping_template_1.str)('defaultValues'), (0, graphql_mapping_template_1.methodCall)((0, graphql_mapping_template_1.ref)('util.defaultIfNull'), (0, graphql_mapping_template_1.ref)('ctx.stash.defaultValues'), (0, graphql_mapping_template_1.obj)({})))),
];
if (initializeIdField) {
statements.push((0, common_1.defaultAutoId)());
}
if (modelConfig === null || modelConfig === void 0 ? void 0 : modelConfig.timestamps) {
statements.push((0, graphql_mapping_template_1.set)((0, graphql_mapping_template_1.ref)('createdAt'), (0, graphql_mapping_template_1.methodCall)((0, graphql_mapping_template_1.ref)('util.time.nowISO8601'))));
if (modelConfig.timestamps.createdAt) {
statements.push((0, graphql_mapping_template_1.qref)((0, graphql_mapping_template_1.methodCall)((0, graphql_mapping_template_1.ref)('ctx.stash.defaultValues.put'), (0, graphql_mapping_template_1.str)(modelConfig.timestamps.createdAt), (0, graphql_mapping_template_1.ref)('createdAt'))));
}
if (modelConfig.timestamps.updatedAt) {
statements.push((0, graphql_mapping_template_1.qref)((0, graphql_mapping_template_1.methodCall)((0, graphql_mapping_template_1.ref)('ctx.stash.defaultValues.put'), (0, graphql_mapping_template_1.str)(modelConfig.timestamps.updatedAt), (0, graphql_mapping_template_1.ref)('createdAt'))));
}
}
statements.push((0, graphql_mapping_template_1.toJson)((0, graphql_mapping_template_1.obj)({
version: (0, graphql_mapping_template_1.str)('2018-05-29'),
payload: (0, graphql_mapping_template_1.obj)({}),
})));
return (0, graphql_mapping_template_1.printBlock)('Initialization default values')((0, graphql_mapping_template_1.compoundExpression)(statements));
};
exports.generateCreateInitSlotTemplate = generateCreateInitSlotTemplate;
const generateDeleteRequestTemplate = (modelName, isSyncEnabled) => {
const statements = [
graphql_transformer_common_1.setArgs,
(0, graphql_mapping_template_1.set)((0, graphql_mapping_template_1.ref)('DeleteRequest'), (0, graphql_mapping_template_1.obj)({
version: (0, graphql_mapping_template_1.str)('2018-05-29'),
operation: (0, graphql_mapping_template_1.str)('DeleteItem'),
})),
(0, graphql_mapping_template_1.ifElse)((0, graphql_mapping_template_1.ref)('ctx.stash.metadata.modelObjectKey'), (0, graphql_mapping_template_1.set)((0, graphql_mapping_template_1.ref)('Key'), (0, graphql_mapping_template_1.ref)('ctx.stash.metadata.modelObjectKey')), (0, graphql_mapping_template_1.set)((0, graphql_mapping_template_1.ref)('Key'), (0, graphql_mapping_template_1.obj)({ id: (0, graphql_mapping_template_1.methodCall)((0, graphql_mapping_template_1.ref)('util.dynamodb.toDynamoDB'), (0, graphql_mapping_template_1.ref)('args.input.id')) }))),
(0, graphql_mapping_template_1.qref)((0, graphql_mapping_template_1.methodCall)((0, graphql_mapping_template_1.ref)('DeleteRequest.put'), (0, graphql_mapping_template_1.str)('key'), (0, graphql_mapping_template_1.ref)('Key'))),
...generateKeyConditionTemplate(true),
(0, graphql_mapping_template_1.iff)((0, graphql_mapping_template_1.ref)('args.condition'), (0, graphql_mapping_template_1.qref)((0, graphql_mapping_template_1.methodCall)((0, graphql_mapping_template_1.ref)('ctx.stash.conditions.add'), (0, graphql_mapping_template_1.ref)('args.condition')))),
(0, common_2.generateConditionSlot)('ctx.stash.conditions', 'Conditions'),
(0, graphql_mapping_template_1.iff)((0, graphql_mapping_template_1.ref)('Conditions'), (0, graphql_mapping_template_1.compoundExpression)([
(0, graphql_mapping_template_1.iff)((0, graphql_mapping_template_1.ref)('keyConditionExprNames'), (0, graphql_mapping_template_1.qref)((0, graphql_mapping_template_1.methodCall)((0, graphql_mapping_template_1.ref)('Conditions.expressionNames.putAll'), (0, graphql_mapping_template_1.ref)('keyConditionExprNames')))),
(0, graphql_mapping_template_1.qref)((0, graphql_mapping_template_1.methodCall)((0, graphql_mapping_template_1.ref)('DeleteRequest.put'), (0, graphql_mapping_template_1.str)('condition'), (0, graphql_mapping_template_1.ref)('Conditions'))),
])),
];
if (isSyncEnabled) {
statements.push((0, graphql_mapping_template_1.qref)((0, graphql_mapping_template_1.methodCall)((0, graphql_mapping_template_1.ref)('DeleteRequest.put'), (0, graphql_mapping_template_1.str)('_version'), (0, graphql_mapping_template_1.ref)('util.defaultIfNull($args.input["_version"], 0)'))));
}
statements.push((0, graphql_mapping_template_1.toJson)((0, graphql_mapping_template_1.ref)('DeleteRequest')));
return (0, graphql_mapping_template_1.printBlock)('Delete Request template')((0, graphql_mapping_template_1.compoundExpression)(statements));
};
exports.generateDeleteRequestTemplate = generateDeleteRequestTemplate;
const generateUpdateInitSlotTemplate = (modelConfig) => {
const statements = [
(0, graphql_mapping_template_1.qref)((0, graphql_mapping_template_1.methodCall)((0, graphql_mapping_template_1.ref)('ctx.stash.put'), (0, graphql_mapping_template_1.str)('defaultValues'), (0, graphql_mapping_template_1.methodCall)((0, graphql_mapping_template_1.ref)('util.defaultIfNull'), (0, graphql_mapping_template_1.ref)('ctx.stash.defaultValues'), (0, graphql_mapping_template_1.obj)({})))),
];
if (modelConfig === null || modelConfig === void 0 ? void 0 : modelConfig.timestamps) {
if (modelConfig.timestamps.updatedAt) {
statements.push((0, graphql_mapping_template_1.set)((0, graphql_mapping_template_1.ref)('updatedAt'), (0, graphql_mapping_template_1.methodCall)((0, graphql_mapping_template_1.ref)('util.time.nowISO8601'))));
statements.push((0, graphql_mapping_template_1.qref)((0, graphql_mapping_template_1.methodCall)((0, graphql_mapping_template_1.ref)('ctx.stash.defaultValues.put'), (0, graphql_mapping_template_1.str)(modelConfig.timestamps.updatedAt), (0, graphql_mapping_template_1.ref)('updatedAt'))));
}
}
statements.push((0, graphql_mapping_template_1.toJson)((0, graphql_mapping_template_1.obj)({
version: (0, graphql_mapping_template_1.str)('2018-05-29'),
payload: (0, graphql_mapping_template_1.obj)({}),
})));
return (0, graphql_mapping_template_1.printBlock)('Initialization default values')((0, graphql_mapping_template_1.compoundExpression)(statements));
};
exports.generateUpdateInitSlotTemplate = generateUpdateInitSlotTemplate;
const generateApplyDefaultsToInputTemplate = (target) => (0, graphql_mapping_template_1.compoundExpression)([
(0, graphql_mapping_template_1.set)((0, graphql_mapping_template_1.ref)(target), (0, graphql_mapping_template_1.methodCall)((0, graphql_mapping_template_1.ref)('util.defaultIfNull'), (0, graphql_mapping_template_1.ref)('ctx.stash.defaultValues'), (0, graphql_mapping_template_1.obj)({}))),
(0, graphql_mapping_template_1.qref)((0, graphql_mapping_template_1.methodCall)((0, graphql_mapping_template_1.ref)(`${target}.putAll`), (0, graphql_mapping_template_1.methodCall)((0, graphql_mapping_template_1.ref)('util.defaultIfNull'), (0, graphql_mapping_template_1.ref)('ctx.args.input'), (0, graphql_mapping_template_1.obj)({})))),
]);
exports.generateApplyDefaultsToInputTemplate = generateApplyDefaultsToInputTemplate;
const generateKeyConditionTemplate = (attributeExistsValue) => {
const statements = [
(0, graphql_mapping_template_1.comment)('Begin - key condition'),
(0, graphql_mapping_template_1.ifElse)((0, graphql_mapping_template_1.ref)('ctx.stash.metadata.modelObjectKey'), (0, graphql_mapping_template_1.compoundExpression)([
(0, graphql_mapping_template_1.set)((0, graphql_mapping_template_1.ref)('keyConditionExpr'), (0, graphql_mapping_template_1.obj)({})),
(0, graphql_mapping_template_1.set)((0, graphql_mapping_template_1.ref)('keyConditionExprNames'), (0, graphql_mapping_template_1.obj)({})),
(0, graphql_mapping_template_1.forEach)((0, graphql_mapping_template_1.ref)('entry'), (0, graphql_mapping_template_1.ref)('ctx.stash.metadata.modelObjectKey.entrySet()'), [
(0, graphql_mapping_template_1.qref)((0, graphql_mapping_template_1.methodCall)((0, graphql_mapping_template_1.ref)('keyConditionExpr.put'), (0, graphql_mapping_template_1.str)('keyCondition$velocityCount'), (0, graphql_mapping_template_1.obj)({ attributeExists: (0, graphql_mapping_template_1.bool)(attributeExistsValue) }))),
(0, graphql_mapping_template_1.qref)((0, graphql_mapping_template_1.methodCall)((0, graphql_mapping_template_1.ref)('keyConditionExprNames.put'), (0, graphql_mapping_template_1.str)('#keyCondition$velocityCount'), (0, graphql_mapping_template_1.str)('$entry.key'))),
]),
(0, graphql_mapping_template_1.qref)((0, graphql_mapping_template_1.methodCall)((0, graphql_mapping_template_1.ref)('ctx.stash.conditions.add'), (0, graphql_mapping_template_1.ref)('keyConditionExpr'))),
]), (0, graphql_mapping_template_1.compoundExpression)([
(0, graphql_mapping_template_1.qref)((0, graphql_mapping_template_1.methodCall)((0, graphql_mapping_template_1.ref)('ctx.stash.conditions.add'), (0, graphql_mapping_template_1.obj)({ id: (0, graphql_mapping_template_1.obj)({ attributeExists: (0, graphql_mapping_template_1.bool)(attributeExistsValue) }) }))),
])),
(0, graphql_mapping_template_1.comment)('End - key condition'),
];
return statements;
};
//# sourceMappingURL=mutation.js.map