cdk-tweet-queue
Version:
Defines an SQS queue with tweet stream from a search
39 lines • 5.36 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.CheckpointTable = void 0;
// eslint-disable-next-line import/no-extraneous-dependencies
const aws_sdk_1 = require("aws-sdk");
const util_1 = require("./util");
class CheckpointTable {
constructor(options = {}) {
this.dynamodb = options.dynamodb || new aws_sdk_1.DynamoDB();
this.tableName = options.tableName || (0, util_1.getEnv)('CHECKPOINT_TABLE_NAME');
this.keyName = options.keyName || (0, util_1.getEnv)('CHECKPOINT_TABLE_KEY_NAME');
}
async getLastCheckpoint() {
const req = {
TableName: this.tableName,
Key: {
[this.keyName]: { S: 'max_id' },
},
};
const response = await this.dynamodb.getItem(req).promise();
if (!response.Item) {
console.error('no max_id stored in database yet');
return undefined; // not found
}
return Number.parseInt(response.Item.max_id.N);
}
async checkpoint(id) {
const req = {
TableName: this.tableName,
Item: {
[this.keyName]: { S: 'max_id' },
max_id: { N: id.toString() },
},
};
await this.dynamodb.putItem(req).promise();
}
}
exports.CheckpointTable = CheckpointTable;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2twb2ludC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNoZWNrcG9pbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkRBQTZEO0FBQzdELHFDQUFtQztBQUNuQyxpQ0FBZ0M7QUFzQmhDLE1BQWEsZUFBZTtJQUsxQixZQUFZLFVBQWtDLEVBQUU7UUFDOUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxJQUFJLElBQUksa0JBQVEsRUFBRSxDQUFDO1FBQ25ELElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLFNBQVMsSUFBSSxJQUFBLGFBQU0sRUFBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQ3RFLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sSUFBSSxJQUFBLGFBQU0sRUFBQywyQkFBMkIsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFFTSxLQUFLLENBQUMsaUJBQWlCO1FBQzVCLE1BQU0sR0FBRyxHQUEwQjtZQUNqQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7WUFDekIsR0FBRyxFQUFFO2dCQUNILENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRTthQUNoQztTQUNGLENBQUM7UUFFRixNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzVELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDbkIsT0FBTyxDQUFDLEtBQUssQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO1lBQ2xELE9BQU8sU0FBUyxDQUFDLENBQUMsWUFBWTtRQUNoQyxDQUFDO1FBRUQsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUUsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFTSxLQUFLLENBQUMsVUFBVSxDQUFDLEVBQVU7UUFDaEMsTUFBTSxHQUFHLEdBQTBCO1lBQ2pDLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztZQUN6QixJQUFJLEVBQUU7Z0JBQ0osQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFO2dCQUMvQixNQUFNLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUFFO2FBQzdCO1NBQ0YsQ0FBQztRQUVGLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDN0MsQ0FBQztDQUNGO0FBdkNELDBDQXVDQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXNcbmltcG9ydCB7IER5bmFtb0RCIH0gZnJvbSAnYXdzLXNkayc7XG5pbXBvcnQgeyBnZXRFbnYgfSBmcm9tICcuL3V0aWwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENoZWNrcG9pbnRUYWJsZU9wdGlvbnMge1xuICAvKipcbiAgICogRHluYW1vREIgY2xpZW50LlxuICAgKiBAZGVmYXVsdCBUaGUgZGVmYXVsdCBjbGllbnRcbiAgICoqL1xuICBkeW5hbW9kYj86IER5bmFtb0RCO1xuXG4gIC8qKlxuICAgKiBUYWJsZSBuYW1lLlxuICAgKiBAZGVmYXVsdCB2YWx1ZSBvZiBDSEVDS1BPSU5UX1RBQkxFX05BTUUgZW52aXJvbm1lbnQgdmFyaWFibGVcbiAgICovXG4gIHRhYmxlTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogTmFtZSBvZiBwcmltYXJ5IGtleS5cbiAgICogQGRlZmF1bHQgdmFsdWUgb2YgdGhlIENIRUNLUE9JTlRfVEFCTEVfS0VZX05BTUUgZW52aXJvbm1lbnQgdmFyaWFibGVcbiAgICovXG4gIGtleU5hbWU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBDaGVja3BvaW50VGFibGUge1xuICBwcml2YXRlIHJlYWRvbmx5IGR5bmFtb2RiOiBEeW5hbW9EQjtcbiAgcHJpdmF0ZSByZWFkb25seSB0YWJsZU5hbWU6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBrZXlOYW1lOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogQ2hlY2twb2ludFRhYmxlT3B0aW9ucyA9IHt9KSB7XG4gICAgdGhpcy5keW5hbW9kYiA9IG9wdGlvbnMuZHluYW1vZGIgfHwgbmV3IER5bmFtb0RCKCk7XG4gICAgdGhpcy50YWJsZU5hbWUgPSBvcHRpb25zLnRhYmxlTmFtZSB8fCBnZXRFbnYoJ0NIRUNLUE9JTlRfVEFCTEVfTkFNRScpO1xuICAgIHRoaXMua2V5TmFtZSA9IG9wdGlvbnMua2V5TmFtZSB8fCBnZXRFbnYoJ0NIRUNLUE9JTlRfVEFCTEVfS0VZX05BTUUnKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRMYXN0Q2hlY2twb2ludCgpOiBQcm9taXNlPHVuZGVmaW5lZCB8IG51bWJlcj4ge1xuICAgIGNvbnN0IHJlcTogRHluYW1vREIuR2V0SXRlbUlucHV0ID0ge1xuICAgICAgVGFibGVOYW1lOiB0aGlzLnRhYmxlTmFtZSxcbiAgICAgIEtleToge1xuICAgICAgICBbdGhpcy5rZXlOYW1lXTogeyBTOiAnbWF4X2lkJyB9LFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmR5bmFtb2RiLmdldEl0ZW0ocmVxKS5wcm9taXNlKCk7XG4gICAgaWYgKCFyZXNwb25zZS5JdGVtKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdubyBtYXhfaWQgc3RvcmVkIGluIGRhdGFiYXNlIHlldCcpO1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDsgLy8gbm90IGZvdW5kXG4gICAgfVxuXG4gICAgcmV0dXJuIE51bWJlci5wYXJzZUludChyZXNwb25zZS5JdGVtLm1heF9pZC5OISk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hlY2twb2ludChpZDogbnVtYmVyKSB7XG4gICAgY29uc3QgcmVxOiBEeW5hbW9EQi5QdXRJdGVtSW5wdXQgPSB7XG4gICAgICBUYWJsZU5hbWU6IHRoaXMudGFibGVOYW1lLFxuICAgICAgSXRlbToge1xuICAgICAgICBbdGhpcy5rZXlOYW1lXTogeyBTOiAnbWF4X2lkJyB9LFxuICAgICAgICBtYXhfaWQ6IHsgTjogaWQudG9TdHJpbmcoKSB9LFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgYXdhaXQgdGhpcy5keW5hbW9kYi5wdXRJdGVtKHJlcSkucHJvbWlzZSgpO1xuICB9XG59Il19