@env0/dynamo-easy
Version:
DynamoDB client for NodeJS and browser with a fluent api to build requests. We take care of the type mapping between JS and DynamoDB, customizable trough typescript decorators.
30 lines • 1.41 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const unique_attribute_value_name_function_1 = require("./unique-attribute-value-name.function");
/**
* resolves name conflict when expression uses an attributeValueName that is already used in given *Input
* @param expression
* @param params
* @return safe-to-use Expression
* @hidden
*/
function resolveAttributeValueNameConflicts(expression, params) {
let attributeValues = {};
let statement = expression.statement;
if (params.ExpressionAttributeValues) {
const existingAttributeValueNames = Object.keys(params.ExpressionAttributeValues);
Object.keys(expression.attributeValues)
.map(key => [key, unique_attribute_value_name_function_1.uniqueAttributeValueName(key.replace(':', ''), existingAttributeValueNames)])
.forEach(([oldValName, newValName]) => {
attributeValues[newValName] = expression.attributeValues[oldValName];
// split-join based replaceAll
statement = statement.split(oldValName).join(newValName);
});
}
else {
attributeValues = expression.attributeValues;
}
return Object.assign({}, expression, { attributeValues, statement });
}
exports.resolveAttributeValueNameConflicts = resolveAttributeValueNameConflicts;
//# sourceMappingURL=resolve-attribute-value-name-conflicts.function.js.map