all files / ps-direct-sdk/ db.js

70.97% Statements 22/31
75% Branches 3/4
80% Functions 8/10
70.97% Lines 22/31
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60                    20× 18×       70×     931×     39×     356×                                      
"use strict";
 
const hl = require('highland');
const R = require("ramda");
 
const BeneLogger = require('bene-logger');
const logger = new BeneLogger();
 
 
module.exports = function (config) {
    var client = R.isNil(config) ? initFakeRedis() : initRealRedis(config);
    logger.info('Initialised connection to database');
 
    return {
        getKey: (key) => {
            return client.getStream(key);
        },
        listKey: function listKey(key, before, after, limit) {
            if (limit === Infinity) {
                return client.zrangebyscoreStream(key, after, before);
            }
            return client.zrangebyscoreStream(key, after, before, 'LIMIT', 0, limit);
        },
        getMultiple: function (keys) {
            return client.mgetStream(keys);
        },
        setKey: function (key, value) {
            return client.setStream(key, value);
        },
        delKey: function delKey(key) {
            return client.delStream(key);
        },
        addToKey: function addToKey(key, score, value) {
            return client.zaddStream(key, score, value);
        },
        delFromKey: function delFromKey(key, value) {
            return client.zremStream(key, value);
        },
        delFromKeyByScore: function (key, score) {
            return client.zremrangebyscoreStream(key, score, score);
        }
    };
};
 
function initFakeRedis() {
    var fakeRedis = require("fakeredis");
    fakeRedis.fast = true;
    hl.streamifyAll(fakeRedis.RedisClient.prototype);
    return fakeRedis.createClient();
}
 
function initRealRedis(config) {
    var redis = require('redis');
    hl.streamifyAll(redis.RedisClient.prototype);
    hl.streamifyAll(redis.Multi.prototype);
    const PORT = config.port;
    const HOST = config.host;
    logger.verbose('connected to redis at %s:%s', HOST, PORT, {});
    return redis.createClient(PORT, HOST);
}