in source/lambda/filter-kinesis-stream/index.ts [193:228]
export function mapUIReferenceDataItemToUpdateMutationInput(item: IUIReferenceDataItem): IUpdateReferenceDataMutationInput {
if (!item.id) { throw new Error('ID was not supplied'); }
if (!item.type) { throw new Error('Type was not supplied'); }
const mutateInput: IUpdateReferenceDataMutationInput = {
id: item.id,
type: item.type
};
const expressionNames = {};
const expressionValues = {};
// Set the updated timestamp to the current time
item.machineStatusUpdatedTimestamp = moment.utc().unix();
const keys = Object.keys(item);
for (let i = 0; i < keys.length; i++) {
const key = keys[i];
if (item.hasOwnProperty(key) && key !== 'id' && key !== 'type') {
expressionNames[`#name${i + 1}`] = key;
expressionValues[`:val${i + 1}`] = item[key];
if (!mutateInput.expression) {
mutateInput.expression = `SET #name${i + 1} = :val${i + 1}`;
} else {
mutateInput.expression = `${mutateInput.expression}, #name${i + 1} = :val${i + 1}`;
}
}
}
mutateInput.expressionNames = JSON.stringify(expressionNames);
mutateInput.expressionValues = JSON.stringify(expressionValues);
return mutateInput;
}