ddb-table
Version:
Strongly typed library for querying and modeling DynamoDB documents.
54 lines (52 loc) • 7.79 kB
JavaScript
"use strict";
exports.__esModule = true;
exports.default = void 0;
// Docs:
// https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.UpdateExpressions.html#Expressions.UpdateExpressions.SET
class UpdateValueExpression {
constructor(names, values, pathName, valueKey) {
this.names = void 0;
this.values = void 0;
this.pathName = void 0;
this.valueKey = void 0;
this.names = names;
this.values = values;
this.pathName = pathName;
this.valueKey = valueKey;
}
name(...path) {
return this.names.add(...path);
}
value(value) {
return this.values.add(this.valueKey, value);
}
inc(a, b) {
return this.operand('+', a, b);
}
dec(a, b) {
return this.operand('-', a, b);
}
operand(operand, a, b) {
if (b === undefined) {
return `${this.pathName} ${operand} ${this.calcValueFn(a)}`;
}
return `${this.calcValueFn(a)} ${operand} ${this.calcValueFn(b)}`;
}
listAppend(list1, list2) {
if (list2 === undefined) {
return `list_append(${this.pathName}, ${this.calcValueFn(list1)})`;
}
return `list_append(${this.calcValueFn(list1)}, ${this.calcValueFn(list2)})`;
}
ifNotExists(value) {
return `if_not_exists(${this.pathName}, ${this.calcValueFn(value)})`;
}
calcValueFn(value) {
if (typeof value !== 'function') {
return this.values.add(this.valueKey, value);
}
return value(this);
}
}
exports.default = UpdateValueExpression;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJVcGRhdGVWYWx1ZUV4cHJlc3Npb24iLCJjb25zdHJ1Y3RvciIsIm5hbWVzIiwidmFsdWVzIiwicGF0aE5hbWUiLCJ2YWx1ZUtleSIsIm5hbWUiLCJwYXRoIiwiYWRkIiwidmFsdWUiLCJpbmMiLCJhIiwiYiIsIm9wZXJhbmQiLCJkZWMiLCJ1bmRlZmluZWQiLCJjYWxjVmFsdWVGbiIsImxpc3RBcHBlbmQiLCJsaXN0MSIsImxpc3QyIiwiaWZOb3RFeGlzdHMiLCJleHBvcnRzIiwiZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9leHByZXNzaW9ucy9VcGRhdGVWYWx1ZUV4cHJlc3Npb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEV4cHJlc3Npb25BdHRyaWJ1dGVOYW1lcyBmcm9tICcuL0V4cHJlc3Npb25BdHRyaWJ1dGVOYW1lcyc7XG5pbXBvcnQgRXhwcmVzc2lvbkF0dHJpYnV0ZVZhbHVlcyBmcm9tICcuL0V4cHJlc3Npb25BdHRyaWJ1dGVWYWx1ZXMnO1xuXG4vLyBEb2NzOlxuLy8gaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FtYXpvbmR5bmFtb2RiL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9FeHByZXNzaW9ucy5VcGRhdGVFeHByZXNzaW9ucy5odG1sI0V4cHJlc3Npb25zLlVwZGF0ZUV4cHJlc3Npb25zLlNFVFxuXG5leHBvcnQgdHlwZSBPcGVyYW5kID0gJysnIHwgJy0nO1xuXG5leHBvcnQgdHlwZSBWYWx1ZUZuPFQsIFY+ID0gViB8ICgoZXhwOiBVcGRhdGVWYWx1ZUV4cHJlc3Npb248VCwgVj4pID0+IHN0cmluZyk7XG5cbmV4cG9ydCB0eXBlIExpc3RWYWx1ZTxWPiA9IFtWXSBleHRlbmRzIFt1bmtub3duW11dID8gViA6IG5ldmVyO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBVcGRhdGVWYWx1ZUV4cHJlc3Npb248VCwgVj4ge1xuICBwcml2YXRlIG5hbWVzOiBFeHByZXNzaW9uQXR0cmlidXRlTmFtZXM8VD47XG4gIHByaXZhdGUgdmFsdWVzOiBFeHByZXNzaW9uQXR0cmlidXRlVmFsdWVzO1xuICBwcml2YXRlIHBhdGhOYW1lOiBzdHJpbmc7XG4gIHByaXZhdGUgdmFsdWVLZXk6IHN0cmluZztcblxuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgbmFtZXM6IEV4cHJlc3Npb25BdHRyaWJ1dGVOYW1lczxUPixcbiAgICB2YWx1ZXM6IEV4cHJlc3Npb25BdHRyaWJ1dGVWYWx1ZXMsXG4gICAgcGF0aE5hbWU6IHN0cmluZyxcbiAgICB2YWx1ZUtleTogc3RyaW5nLFxuICApIHtcbiAgICB0aGlzLm5hbWVzID0gbmFtZXM7XG4gICAgdGhpcy52YWx1ZXMgPSB2YWx1ZXM7XG4gICAgdGhpcy5wYXRoTmFtZSA9IHBhdGhOYW1lO1xuICAgIHRoaXMudmFsdWVLZXkgPSB2YWx1ZUtleTtcbiAgfVxuXG4gIHB1YmxpYyBuYW1lPFxuICAgIEsxIGV4dGVuZHMga2V5b2YgVCxcbiAgICBLMiBleHRlbmRzIGtleW9mIFRbSzFdLFxuICAgIEszIGV4dGVuZHMga2V5b2YgVFtLMV1bSzJdLFxuICAgIEs0IGV4dGVuZHMga2V5b2YgVFtLMV1bSzJdW0szXSxcbiAgICBLNSBleHRlbmRzIGtleW9mIFRbSzFdW0syXVtLM11bSzRdLFxuICAgIEs2IGV4dGVuZHMga2V5b2YgVFtLMV1bSzJdW0szXVtLNF1bSzVdLFxuICAgIEs3IGV4dGVuZHMga2V5b2YgVFtLMV1bSzJdW0szXVtLNF1bSzVdW0s2XSxcbiAgICBLOCBleHRlbmRzIGtleW9mIFRbSzFdW0syXVtLM11bSzRdW0s1XVtLNl1bSzddLFxuICA+KFxuICAgIC4uLnBhdGg6IFtLMSwgSzI/LCBLMz8sIEs0PywgSzU/LCBLNj8sIEs3PywgSzg/LCAuLi4oc3RyaW5nIHwgbnVtYmVyKVtdXVxuICApOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLm5hbWVzLmFkZCguLi5wYXRoKTtcbiAgfVxuXG4gIHB1YmxpYyB2YWx1ZSh2YWx1ZTogVik6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWVzLmFkZCh0aGlzLnZhbHVlS2V5LCB2YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgaW5jKGE6IFZhbHVlRm48VCwgVj4sIGI/OiBWYWx1ZUZuPFQsIFY+KTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5vcGVyYW5kKCcrJywgYSwgYik7XG4gIH1cblxuICBwdWJsaWMgZGVjKGE6IFZhbHVlRm48VCwgVj4sIGI/OiBWYWx1ZUZuPFQsIFY+KTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5vcGVyYW5kKCctJywgYSwgYik7XG4gIH1cblxuICBwdWJsaWMgb3BlcmFuZChcbiAgICBvcGVyYW5kOiBPcGVyYW5kLFxuICAgIGE6IFZhbHVlRm48VCwgVj4sXG4gICAgYj86IFZhbHVlRm48VCwgVj4sXG4gICk6IHN0cmluZyB7XG4gICAgaWYgKGIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGAke3RoaXMucGF0aE5hbWV9ICR7b3BlcmFuZH0gJHt0aGlzLmNhbGNWYWx1ZUZuKGEpfWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIGAke3RoaXMuY2FsY1ZhbHVlRm4oYSl9ICR7b3BlcmFuZH0gJHt0aGlzLmNhbGNWYWx1ZUZuKGIpfWA7XG4gIH1cblxuICBwdWJsaWMgbGlzdEFwcGVuZChcbiAgICBsaXN0MTogVmFsdWVGbjxULCBMaXN0VmFsdWU8Vj4+LFxuICAgIGxpc3QyPzogVmFsdWVGbjxULCBMaXN0VmFsdWU8Vj4+LFxuICApOiBzdHJpbmcge1xuICAgIGlmIChsaXN0MiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gYGxpc3RfYXBwZW5kKCR7dGhpcy5wYXRoTmFtZX0sICR7dGhpcy5jYWxjVmFsdWVGbihsaXN0MSl9KWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIGBsaXN0X2FwcGVuZCgke3RoaXMuY2FsY1ZhbHVlRm4obGlzdDEpfSwgJHt0aGlzLmNhbGNWYWx1ZUZuKFxuICAgICAgbGlzdDIsXG4gICAgKX0pYDtcbiAgfVxuXG4gIHB1YmxpYyBpZk5vdEV4aXN0cyh2YWx1ZTogVmFsdWVGbjxULCBWPik6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBpZl9ub3RfZXhpc3RzKCR7dGhpcy5wYXRoTmFtZX0sICR7dGhpcy5jYWxjVmFsdWVGbih2YWx1ZSl9KWA7XG4gIH1cblxuICBwcm90ZWN0ZWQgY2FsY1ZhbHVlRm4odmFsdWU6IFZhbHVlRm48VCwgVj4pOiBzdHJpbmcge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlcy5hZGQodGhpcy52YWx1ZUtleSwgdmFsdWUpO1xuICAgIH1cblxuICAgIHJldHVybiAodmFsdWUgYXMgKGV4cDogVXBkYXRlVmFsdWVFeHByZXNzaW9uPFQsIFY+KSA9PiBzdHJpbmcpKHRoaXMpO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7QUFHQTtBQUNBOztBQVFlLE1BQU1BLHFCQUFxQixDQUFPO0VBTXhDQyxXQUFXQSxDQUNoQkMsS0FBa0MsRUFDbENDLE1BQWlDLEVBQ2pDQyxRQUFnQixFQUNoQkMsUUFBZ0IsRUFDaEI7SUFBQSxLQVZNSCxLQUFLO0lBQUEsS0FDTEMsTUFBTTtJQUFBLEtBQ05DLFFBQVE7SUFBQSxLQUNSQyxRQUFRO0lBUWQsSUFBSSxDQUFDSCxLQUFLLEdBQUdBLEtBQUs7SUFDbEIsSUFBSSxDQUFDQyxNQUFNLEdBQUdBLE1BQU07SUFDcEIsSUFBSSxDQUFDQyxRQUFRLEdBQUdBLFFBQVE7SUFDeEIsSUFBSSxDQUFDQyxRQUFRLEdBQUdBLFFBQVE7RUFDMUI7RUFFT0MsSUFBSUEsQ0FVVCxHQUFHQyxJQUFxRSxFQUNoRTtJQUNSLE9BQU8sSUFBSSxDQUFDTCxLQUFLLENBQUNNLEdBQUcsQ0FBQyxHQUFHRCxJQUFJLENBQUM7RUFDaEM7RUFFT0UsS0FBS0EsQ0FBQ0EsS0FBUSxFQUFVO0lBQzdCLE9BQU8sSUFBSSxDQUFDTixNQUFNLENBQUNLLEdBQUcsQ0FBQyxJQUFJLENBQUNILFFBQVEsRUFBRUksS0FBSyxDQUFDO0VBQzlDO0VBRU9DLEdBQUdBLENBQUNDLENBQWdCLEVBQUVDLENBQWlCLEVBQVU7SUFDdEQsT0FBTyxJQUFJLENBQUNDLE9BQU8sQ0FBQyxHQUFHLEVBQUVGLENBQUMsRUFBRUMsQ0FBQyxDQUFDO0VBQ2hDO0VBRU9FLEdBQUdBLENBQUNILENBQWdCLEVBQUVDLENBQWlCLEVBQVU7SUFDdEQsT0FBTyxJQUFJLENBQUNDLE9BQU8sQ0FBQyxHQUFHLEVBQUVGLENBQUMsRUFBRUMsQ0FBQyxDQUFDO0VBQ2hDO0VBRU9DLE9BQU9BLENBQ1pBLE9BQWdCLEVBQ2hCRixDQUFnQixFQUNoQkMsQ0FBaUIsRUFDVDtJQUNSLElBQUlBLENBQUMsS0FBS0csU0FBUyxFQUFFO01BQ25CLE9BQVEsR0FBRSxJQUFJLENBQUNYLFFBQVMsSUFBR1MsT0FBUSxJQUFHLElBQUksQ0FBQ0csV0FBVyxDQUFDTCxDQUFDLENBQUUsRUFBQztJQUM3RDtJQUVBLE9BQVEsR0FBRSxJQUFJLENBQUNLLFdBQVcsQ0FBQ0wsQ0FBQyxDQUFFLElBQUdFLE9BQVEsSUFBRyxJQUFJLENBQUNHLFdBQVcsQ0FBQ0osQ0FBQyxDQUFFLEVBQUM7RUFDbkU7RUFFT0ssVUFBVUEsQ0FDZkMsS0FBK0IsRUFDL0JDLEtBQWdDLEVBQ3hCO0lBQ1IsSUFBSUEsS0FBSyxLQUFLSixTQUFTLEVBQUU7TUFDdkIsT0FBUSxlQUFjLElBQUksQ0FBQ1gsUUFBUyxLQUFJLElBQUksQ0FBQ1ksV0FBVyxDQUFDRSxLQUFLLENBQUUsR0FBRTtJQUNwRTtJQUVBLE9BQVEsZUFBYyxJQUFJLENBQUNGLFdBQVcsQ0FBQ0UsS0FBSyxDQUFFLEtBQUksSUFBSSxDQUFDRixXQUFXLENBQ2hFRyxLQUFLLENBQ0wsR0FBRTtFQUNOO0VBRU9DLFdBQVdBLENBQUNYLEtBQW9CLEVBQVU7SUFDL0MsT0FBUSxpQkFBZ0IsSUFBSSxDQUFDTCxRQUFTLEtBQUksSUFBSSxDQUFDWSxXQUFXLENBQUNQLEtBQUssQ0FBRSxHQUFFO0VBQ3RFO0VBRVVPLFdBQVdBLENBQUNQLEtBQW9CLEVBQVU7SUFDbEQsSUFBSSxPQUFPQSxLQUFLLEtBQUssVUFBVSxFQUFFO01BQy9CLE9BQU8sSUFBSSxDQUFDTixNQUFNLENBQUNLLEdBQUcsQ0FBQyxJQUFJLENBQUNILFFBQVEsRUFBRUksS0FBSyxDQUFDO0lBQzlDO0lBRUEsT0FBUUEsS0FBSyxDQUFrRCxJQUFJLENBQUM7RUFDdEU7QUFDRjtBQUFDWSxPQUFBLENBQUFDLE9BQUEsR0FBQXRCLHFCQUFBIn0=