UNPKG

@payburner/keyburner-sidewinder-core

Version:
82 lines 3.13 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.AWSDynamoGlobalAddressService = void 0; class AWSDynamoGlobalAddressService { constructor(docClient) { this.docClient = null; this.docClient = docClient; } sequenceKey(address, environment) { return environment + '/' + address; } setEnvironmentAddressState(address, environment, sequence, txn_id) { const self = this; return new Promise(function (resolve, reject) { self.getEnvironmentAddressState(address, environment).then((existingSequence) => { if (existingSequence.sequence === 0 && sequence === 0) { resolve(true); return; } else if (sequence != existingSequence.sequence + 1) { resolve(false); return; } const dataBody = { address: address, environment: environment, sequence: sequence, last_txn_id: txn_id }; const params = { TableName: 'sidewinder_sequence', Item: dataBody }; const t0 = new Date().getTime(); self.docClient.put(params, function (err, data) { console.log('Update Time Set Sequence: ' + (new Date().getTime() - t0)); if (err) { resolve(false); } else { resolve(true); } }); }); }); } getEnvironmentAddressState(address, environment) { const self = this; return new Promise((resolve, reject) => { const params = { TableName: "sidewinder_sequence", IndexName: 'address-environment-index', KeyConditionExpression: "address = :address and environment = :environment", ExpressionAttributeValues: { ":address": address, ":environment": environment } }; self.docClient.query(params, function (err, data) { if (err) { console.error("getEnvironmentAddressState :: Unable to query. Error:", JSON.stringify(err, null, 2)); reject(err); } else { if (data.Items.length === 0) { resolve({ address: address, environment: environment, last_txn_id: 'NONE', sequence: 0 }); } else { resolve(data.Items[0]); } } }); }); } } exports.AWSDynamoGlobalAddressService = AWSDynamoGlobalAddressService; //# sourceMappingURL=AWSDynamoGlobalAddressService.js.map