ddb-table
Version:
Strongly typed library for querying and modeling DynamoDB documents.
61 lines (60 loc) • 8.07 kB
JavaScript
"use strict";
exports.__esModule = true;
exports.default = void 0;
var _Query = _interopRequireDefault(require("./Query"));
var _expressions = require("../expressions");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
class ItemsQuery extends _Query.default {
constructor(...args) {
super(...args);
this.values = void 0;
this.projection = void 0;
this.filters = void 0;
}
handleInputUpdated() {
super.handleInputUpdated();
this.values = new _expressions.ExpressionAttributeValues(this.input.ExpressionAttributeValues);
this.projection = new _expressions.ProjectionExpression(this.names, this.input.ProjectionExpression);
this.filters = new _expressions.ConditionExpression(this.names, this.values, this.input.FilterExpression);
}
syncInput() {
super.syncInput();
this.input.ExpressionAttributeValues = this.values.serialize();
this.input.ProjectionExpression = this.projection.serialize();
this.input.FilterExpression = this.filters.serialize();
}
project(fields) {
this.projection.add(fields);
return this;
}
filter(fn) {
this.filters.and(fn);
return this;
}
select(select) {
this.input.Select = select;
return this;
}
limit(limit) {
this.input.Limit = limit;
return this;
}
startKey(key) {
this.input.ExclusiveStartKey = key || undefined;
return this;
}
async *entries() {
do {
const {
Items,
LastEvaluatedKey
} = await this.exec();
if (Items) {
yield* Items;
}
this.startKey(LastEvaluatedKey);
} while (this.input.ExclusiveStartKey);
}
}
exports.default = ItemsQuery;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfUXVlcnkiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9leHByZXNzaW9ucyIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiSXRlbXNRdWVyeSIsIlF1ZXJ5IiwiY29uc3RydWN0b3IiLCJhcmdzIiwidmFsdWVzIiwicHJvamVjdGlvbiIsImZpbHRlcnMiLCJoYW5kbGVJbnB1dFVwZGF0ZWQiLCJFeHByZXNzaW9uQXR0cmlidXRlVmFsdWVzIiwiaW5wdXQiLCJQcm9qZWN0aW9uRXhwcmVzc2lvbiIsIm5hbWVzIiwiQ29uZGl0aW9uRXhwcmVzc2lvbiIsIkZpbHRlckV4cHJlc3Npb24iLCJzeW5jSW5wdXQiLCJzZXJpYWxpemUiLCJwcm9qZWN0IiwiZmllbGRzIiwiYWRkIiwiZmlsdGVyIiwiZm4iLCJhbmQiLCJzZWxlY3QiLCJTZWxlY3QiLCJsaW1pdCIsIkxpbWl0Iiwic3RhcnRLZXkiLCJrZXkiLCJFeGNsdXNpdmVTdGFydEtleSIsInVuZGVmaW5lZCIsImVudHJpZXMiLCJJdGVtcyIsIkxhc3RFdmFsdWF0ZWRLZXkiLCJleGVjIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9xdWVyaWVzL0l0ZW1zUXVlcnkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSXRlbSwgS2V5LCBTY2FuQ29tbWFuZElucHV0IH0gZnJvbSAnLi4vRG9jdW1lbnRDbGllbnQnO1xuaW1wb3J0IFF1ZXJ5IGZyb20gJy4vUXVlcnknO1xuaW1wb3J0IHtcbiAgQ29uZGl0aW9uRXhwcmVzc2lvbixcbiAgRXhwcmVzc2lvbkF0dHJpYnV0ZVZhbHVlcyxcbiAgUHJvamVjdGlvbkV4cHJlc3Npb24sXG59IGZyb20gJy4uL2V4cHJlc3Npb25zJztcbmltcG9ydCB7IFByb2plY3Rpb25GaWVsZHMgfSBmcm9tICcuLi9leHByZXNzaW9ucy9Qcm9qZWN0aW9uRXhwcmVzc2lvbic7XG5pbXBvcnQgeyBDb25kaXRpb25HZW5lcmF0b3IgfSBmcm9tICcuLi9leHByZXNzaW9ucy9Db25kaXRpb25FeHByZXNzaW9uJztcbmltcG9ydCB7IFF1ZXJ5Q29tbWFuZElucHV0IH0gZnJvbSAnQGF3cy1zZGsvbGliLWR5bmFtb2RiJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSXRlbXNRdWVyeTxcbiAgVCBleHRlbmRzIEssXG4gIEsgZXh0ZW5kcyBJdGVtLFxuICBJIGV4dGVuZHMgU2NhbkNvbW1hbmRJbnB1dCB8IFF1ZXJ5Q29tbWFuZElucHV0LFxuICBPIGV4dGVuZHMgeyBJdGVtcz86IFRbXTsgTGFzdEV2YWx1YXRlZEtleT86IEsgfSxcbj4gZXh0ZW5kcyBRdWVyeTxULCBJLCBPPiB7XG4gIHByb3RlY3RlZCB2YWx1ZXMhOiBFeHByZXNzaW9uQXR0cmlidXRlVmFsdWVzO1xuICBwcm90ZWN0ZWQgcHJvamVjdGlvbiE6IFByb2plY3Rpb25FeHByZXNzaW9uPFQsIEs+O1xuICBwcm90ZWN0ZWQgZmlsdGVycyE6IENvbmRpdGlvbkV4cHJlc3Npb248VD47XG5cbiAgcHJvdGVjdGVkIGhhbmRsZUlucHV0VXBkYXRlZCgpOiB2b2lkIHtcbiAgICBzdXBlci5oYW5kbGVJbnB1dFVwZGF0ZWQoKTtcblxuICAgIHRoaXMudmFsdWVzID0gbmV3IEV4cHJlc3Npb25BdHRyaWJ1dGVWYWx1ZXMoXG4gICAgICB0aGlzLmlucHV0LkV4cHJlc3Npb25BdHRyaWJ1dGVWYWx1ZXMsXG4gICAgKTtcblxuICAgIHRoaXMucHJvamVjdGlvbiA9IG5ldyBQcm9qZWN0aW9uRXhwcmVzc2lvbihcbiAgICAgIHRoaXMubmFtZXMsXG4gICAgICB0aGlzLmlucHV0LlByb2plY3Rpb25FeHByZXNzaW9uLFxuICAgICk7XG5cbiAgICB0aGlzLmZpbHRlcnMgPSBuZXcgQ29uZGl0aW9uRXhwcmVzc2lvbihcbiAgICAgIHRoaXMubmFtZXMsXG4gICAgICB0aGlzLnZhbHVlcyxcbiAgICAgIHRoaXMuaW5wdXQuRmlsdGVyRXhwcmVzc2lvbixcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIHN5bmNJbnB1dCgpOiB2b2lkIHtcbiAgICBzdXBlci5zeW5jSW5wdXQoKTtcblxuICAgIHRoaXMuaW5wdXQuRXhwcmVzc2lvbkF0dHJpYnV0ZVZhbHVlcyA9IHRoaXMudmFsdWVzLnNlcmlhbGl6ZSgpO1xuICAgIHRoaXMuaW5wdXQuUHJvamVjdGlvbkV4cHJlc3Npb24gPSB0aGlzLnByb2plY3Rpb24uc2VyaWFsaXplKCk7XG4gICAgdGhpcy5pbnB1dC5GaWx0ZXJFeHByZXNzaW9uID0gdGhpcy5maWx0ZXJzLnNlcmlhbGl6ZSgpO1xuICB9XG5cbiAgcHVibGljIHByb2plY3Q8UCBleHRlbmRzIFByb2plY3Rpb25GaWVsZHM8VD4+KGZpZWxkczogUCk6IHRoaXMge1xuICAgIHRoaXMucHJvamVjdGlvbi5hZGQoZmllbGRzKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBmaWx0ZXIoZm46IENvbmRpdGlvbkdlbmVyYXRvcjxUPik6IHRoaXMge1xuICAgIHRoaXMuZmlsdGVycy5hbmQoZm4pO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIHNlbGVjdChcbiAgICBzZWxlY3Q6XG4gICAgICB8ICdBTExfQVRUUklCVVRFUydcbiAgICAgIHwgJ0FMTF9QUk9KRUNURURfQVRUUklCVVRFUydcbiAgICAgIHwgJ1NQRUNJRklDX0FUVFJJQlVURVMnXG4gICAgICB8ICdDT1VOVCcsXG4gICk6IHRoaXMge1xuICAgIHRoaXMuaW5wdXQuU2VsZWN0ID0gc2VsZWN0O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIGxpbWl0KGxpbWl0OiBudW1iZXIpOiB0aGlzIHtcbiAgICB0aGlzLmlucHV0LkxpbWl0ID0gbGltaXQ7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBzdGFydEtleShrZXk6IEsgfCBLZXkgfCBudWxsIHwgdW5kZWZpbmVkKTogdGhpcyB7XG4gICAgdGhpcy5pbnB1dC5FeGNsdXNpdmVTdGFydEtleSA9IGtleSB8fCB1bmRlZmluZWQ7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyAqZW50cmllcygpOiBBc3luY0l0ZXJhYmxlSXRlcmF0b3I8VD4ge1xuICAgIGRvIHtcbiAgICAgIGNvbnN0IHsgSXRlbXMsIExhc3RFdmFsdWF0ZWRLZXkgfSA9IGF3YWl0IHRoaXMuZXhlYygpO1xuXG4gICAgICBpZiAoSXRlbXMpIHtcbiAgICAgICAgeWllbGQqIEl0ZW1zO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnN0YXJ0S2V5KExhc3RFdmFsdWF0ZWRLZXkpO1xuICAgIH0gd2hpbGUgKHRoaXMuaW5wdXQuRXhjbHVzaXZlU3RhcnRLZXkpO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7QUFDQSxJQUFBQSxNQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxZQUFBLEdBQUFELE9BQUE7QUFJd0IsU0FBQUQsdUJBQUFHLEdBQUEsV0FBQUEsR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsR0FBQUQsR0FBQSxLQUFBRSxPQUFBLEVBQUFGLEdBQUE7QUFLVCxNQUFNRyxVQUFVLFNBS3JCQyxjQUFLLENBQVU7RUFBQUMsWUFBQSxHQUFBQyxJQUFBO0lBQUEsU0FBQUEsSUFBQTtJQUFBLEtBQ2JDLE1BQU07SUFBQSxLQUNOQyxVQUFVO0lBQUEsS0FDVkMsT0FBTztFQUFBO0VBRVBDLGtCQUFrQkEsQ0FBQSxFQUFTO0lBQ25DLEtBQUssQ0FBQ0Esa0JBQWtCLEVBQUU7SUFFMUIsSUFBSSxDQUFDSCxNQUFNLEdBQUcsSUFBSUksc0NBQXlCLENBQ3pDLElBQUksQ0FBQ0MsS0FBSyxDQUFDRCx5QkFBeUIsQ0FDckM7SUFFRCxJQUFJLENBQUNILFVBQVUsR0FBRyxJQUFJSyxpQ0FBb0IsQ0FDeEMsSUFBSSxDQUFDQyxLQUFLLEVBQ1YsSUFBSSxDQUFDRixLQUFLLENBQUNDLG9CQUFvQixDQUNoQztJQUVELElBQUksQ0FBQ0osT0FBTyxHQUFHLElBQUlNLGdDQUFtQixDQUNwQyxJQUFJLENBQUNELEtBQUssRUFDVixJQUFJLENBQUNQLE1BQU0sRUFDWCxJQUFJLENBQUNLLEtBQUssQ0FBQ0ksZ0JBQWdCLENBQzVCO0VBQ0g7RUFFVUMsU0FBU0EsQ0FBQSxFQUFTO0lBQzFCLEtBQUssQ0FBQ0EsU0FBUyxFQUFFO0lBRWpCLElBQUksQ0FBQ0wsS0FBSyxDQUFDRCx5QkFBeUIsR0FBRyxJQUFJLENBQUNKLE1BQU0sQ0FBQ1csU0FBUyxFQUFFO0lBQzlELElBQUksQ0FBQ04sS0FBSyxDQUFDQyxvQkFBb0IsR0FBRyxJQUFJLENBQUNMLFVBQVUsQ0FBQ1UsU0FBUyxFQUFFO0lBQzdELElBQUksQ0FBQ04sS0FBSyxDQUFDSSxnQkFBZ0IsR0FBRyxJQUFJLENBQUNQLE9BQU8sQ0FBQ1MsU0FBUyxFQUFFO0VBQ3hEO0VBRU9DLE9BQU9BLENBQWdDQyxNQUFTLEVBQVE7SUFDN0QsSUFBSSxDQUFDWixVQUFVLENBQUNhLEdBQUcsQ0FBQ0QsTUFBTSxDQUFDO0lBQzNCLE9BQU8sSUFBSTtFQUNiO0VBRU9FLE1BQU1BLENBQUNDLEVBQXlCLEVBQVE7SUFDN0MsSUFBSSxDQUFDZCxPQUFPLENBQUNlLEdBQUcsQ0FBQ0QsRUFBRSxDQUFDO0lBQ3BCLE9BQU8sSUFBSTtFQUNiO0VBRU9FLE1BQU1BLENBQ1hBLE1BSVcsRUFDTDtJQUNOLElBQUksQ0FBQ2IsS0FBSyxDQUFDYyxNQUFNLEdBQUdELE1BQU07SUFDMUIsT0FBTyxJQUFJO0VBQ2I7RUFFT0UsS0FBS0EsQ0FBQ0EsS0FBYSxFQUFRO0lBQ2hDLElBQUksQ0FBQ2YsS0FBSyxDQUFDZ0IsS0FBSyxHQUFHRCxLQUFLO0lBRXhCLE9BQU8sSUFBSTtFQUNiO0VBRU9FLFFBQVFBLENBQUNDLEdBQStCLEVBQVE7SUFDckQsSUFBSSxDQUFDbEIsS0FBSyxDQUFDbUIsaUJBQWlCLEdBQUdELEdBQUcsSUFBSUUsU0FBUztJQUUvQyxPQUFPLElBQUk7RUFDYjtFQUVBLE9BQWNDLE9BQU9BLENBQUEsRUFBNkI7SUFDaEQsR0FBRztNQUNELE1BQU07UUFBRUMsS0FBSztRQUFFQztNQUFpQixDQUFDLEdBQUcsTUFBTSxJQUFJLENBQUNDLElBQUksRUFBRTtNQUVyRCxJQUFJRixLQUFLLEVBQUU7UUFDVCxPQUFPQSxLQUFLO01BQ2Q7TUFFQSxJQUFJLENBQUNMLFFBQVEsQ0FBQ00sZ0JBQWdCLENBQUM7SUFDakMsQ0FBQyxRQUFRLElBQUksQ0FBQ3ZCLEtBQUssQ0FBQ21CLGlCQUFpQjtFQUN2QztBQUNGO0FBQUNNLE9BQUEsQ0FBQW5DLE9BQUEsR0FBQUMsVUFBQSJ9