storage.js

Generated by CoffeeScript 1.9.1

(function() {
  module.exports = (function() {
    var DBPG, e, ld, storage, ueberDB;
    ld = require('lodash');
    storage = {};
    storage.DBPREFIX = {
      GLOBAL: 'mypads:'
    };
    DBPG = storage.DBPREFIX.GLOBAL;
    storage.DBPREFIX.CONF = DBPG + "conf:";
    storage.DBPREFIX.USER = DBPG + "user:";
    storage.DBPREFIX.GROUP = DBPG + "group:";
    storage.DBPREFIX.PAD = DBPG + "pad:";
    try {
      storage.db = require('ep_etherpad-lite/node/db/DB').db;
    } catch (_error) {
      e = _error;
      ueberDB = require('ueberDB');
      storage.db = new ueberDB.database('dirty', {
        filename: './test.db'
      });
      storage.db.init(function(err) {
        if (err) {
          return console.log(err);
        }
      });
    }
    storage.init = function(callback) {
      var user;
      user = require('./model/user.js');
      return user.init(callback);
    };
    storage.fn = {};
    storage.fn.getDelKeys = function(del, keys, callback) {
      var action, done, getDel, results;
      results = del ? true : {};
      action = del ? 'remove' : 'get';
      getDel = function(k) {
        return storage.db[action](k, function(err, res) {
          if (err) {
            return callback(err);
          }
          if (!del) {
            results[k] = res;
          }
          return done();
        });
      };
      done = function() {
        if (keys.length) {
          return getDel(keys.pop());
        } else {
          return callback(null, results);
        }
      };
      return done();
    };
    storage.fn.getKeys = ld.partial(storage.fn.getDelKeys, false);
    storage.fn.delKeys = ld.partial(storage.fn.getDelKeys, true);
    storage.fn.setKeys = function(kv, callback) {
      var done, pairs, set;
      pairs = ld.pairs(kv);
      set = function(k, v) {
        return storage.db.set(k, v, done);
      };
      done = function(err) {
        var pair;
        if (err) {
          return callback(err);
        }
        if (pairs.length) {
          pair = pairs.pop();
          return set(pair[0], pair[1]);
        } else {
          return callback(null);
        }
      };
      return done();
    };
    return storage;
  })();

}).call(this);