UNPKG

@splitsoftware/splitio-commons

Version:
65 lines (64 loc) 3.16 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.RBSegmentsCacheInRedis = void 0; var lang_1 = require("../../utils/lang"); var constants_1 = require("./constants"); var sets_1 = require("../../utils/lang/sets"); var RBSegmentsCacheInRedis = /** @class */ (function () { function RBSegmentsCacheInRedis(log, keys, redis) { this.log = log; this.keys = keys; this.redis = redis; } RBSegmentsCacheInRedis.prototype.get = function (name) { return this.redis.get(this.keys.buildRBSegmentKey(name)) .then(function (maybeRBSegment) { return maybeRBSegment && JSON.parse(maybeRBSegment); }); }; RBSegmentsCacheInRedis.prototype.getNames = function () { var _this = this; return this.redis.keys(this.keys.searchPatternForRBSegmentKeys()).then(function (listOfKeys) { return listOfKeys.map(_this.keys.extractKey); }); }; RBSegmentsCacheInRedis.prototype.contains = function (names) { var namesArray = (0, sets_1.setToArray)(names); return this.getNames().then(function (namesInStorage) { return namesArray.every(function (name) { return namesInStorage.includes(name); }); }); }; RBSegmentsCacheInRedis.prototype.update = function (toAdd, toRemove, changeNumber) { var _this = this; return Promise.all([ this.setChangeNumber(changeNumber), Promise.all(toAdd.map(function (toAdd) { var key = _this.keys.buildRBSegmentKey(toAdd.name); var stringifiedNewRBSegment = JSON.stringify(toAdd); return _this.redis.set(key, stringifiedNewRBSegment).then(function () { return true; }); })), Promise.all(toRemove.map(function (toRemove) { var key = _this.keys.buildRBSegmentKey(toRemove.name); return _this.redis.del(key).then(function (status) { return status === 1; }); })) ]).then(function (_a) { var added = _a[1], removed = _a[2]; return added.some(function (result) { return result; }) || removed.some(function (result) { return result; }); }); }; RBSegmentsCacheInRedis.prototype.setChangeNumber = function (changeNumber) { return this.redis.set(this.keys.buildRBSegmentsTillKey(), changeNumber + '').then(function (status) { return status === 'OK'; }); }; RBSegmentsCacheInRedis.prototype.getChangeNumber = function () { var _this = this; return this.redis.get(this.keys.buildRBSegmentsTillKey()).then(function (value) { var i = parseInt(value, 10); return (0, lang_1.isNaNNumber)(i) ? -1 : i; }).catch(function (e) { _this.log.error(constants_1.LOG_PREFIX + 'Could not retrieve changeNumber from storage. Error: ' + e); return -1; }); }; // @TODO implement if required by DataLoader or producer mode RBSegmentsCacheInRedis.prototype.clear = function () { return Promise.resolve(); }; return RBSegmentsCacheInRedis; }()); exports.RBSegmentsCacheInRedis = RBSegmentsCacheInRedis;