ronelliott/kj-resource-redis

View on GitHub
index.js

Summary

Maintainability
A
0 mins
Test Coverage
'use strict';

const is = require('is'),
      prequire = require('parent-require'),
      redis = prequire('redis'),
      redisUrl = require('redis-url');

module.exports = function($opts) {
    var enabled = is.defined($opts.enabled) ? $opts.enabled : true,
        inject = $opts.inject || '$redis',
        uri = $opts.uri;

    if (enabled && (is.null(uri) || is.undefined(uri))) {
        throw new Error('URI is not defined!');
    }

    return function($$resolver, callback) {
        if (!enabled) {
            callback();
            return;
        }

        var cfg = redisUrl.parse(uri),
            opts = Object.assign({ auth_pass: cfg.password }, cfg.query),
            client = redis.createClient(cfg.port, cfg.hostname, opts);

        client.select(cfg.database, function(err) {
            if (err) {
                callback(err);
                return;
            }

            $$resolver.add(inject, client);
            callback();
        });
    };
};