configuration.js

Generated by CoffeeScript 1.9.1

(function() {
  module.exports = (function() {
    var DBPREFIX, DEFAULTS, configuration, db, ld, storage;
    ld = require('lodash');
    storage = require('./storage.js');
    db = storage.db;
    DEFAULTS = {
      passwordMin: 8,
      passwordMax: 30,
      sessionSecret: 'LvP@WHB#I5)u@u@nAX9RL*n7CEQPxs'
    };
    DBPREFIX = storage.DBPREFIX.CONF;
    configuration = {
      init: function(callback) {
        var kv;
        if (callback == null) {
          callback = ld.noop;
        }
        if (!ld.isFunction(callback)) {
          throw new TypeError('callback must be a function');
        }
        kv = ld.transform(DEFAULTS, function(memo, val, key) {
          return memo[DBPREFIX + key] = val;
        });
        return storage.fn.setKeys(kv, callback);
      },
      get: function(key, callback) {
        if (!ld.isString(key)) {
          throw new TypeError('key must be a string');
        }
        if (!ld.isFunction(callback)) {
          throw new TypeError('callback must be a function');
        }
        return db.get(DBPREFIX + key, function(err, res) {
          if (err) {
            return callback(err);
          }
          if (ld.isUndefined(res)) {
            return callback(new Error('Key doesn\'t exist'));
          }
          return callback(null, res);
        });
      },
      set: function(key, value, callback) {
        if (!ld.isString(key)) {
          throw new TypeError('key must be a string');
        }
        if (ld.isUndefined(value)) {
          throw new TypeError('value is mandatory');
        }
        if (!ld.isFunction(callback)) {
          throw new TypeError('callback must be a function');
        }
        return db.set(DBPREFIX + key, value, callback);
      },
      del: function(key, callback) {
        if (!ld.isString(key)) {
          throw new TypeError('key must be a string');
        }
        if (!ld.isFunction(callback)) {
          throw new TypeError('callback must be a function');
        }
        return db.remove(DBPREFIX + key, callback);
      },
      all: function(callback) {
        if (!ld.isFunction(callback)) {
          throw new TypeError('callback must be a function');
        }
        return db.findKeys(DBPREFIX + "*", null, function(err, keys) {
          if (err) {
            return callback(err);
          }
          return storage.fn.getKeys(keys, function(err, results) {
            if (results) {
              results = ld.transform(results, function(memo, val, key) {
                return memo[key.replace(DBPREFIX, '')] = val;
              });
            }
            return callback(arguments[0], results);
          });
        });
      }
    };
    return configuration;
  })();

}).call(this);