common.js

Generated by CoffeeScript 1.9.1

(function() {
  module.exports = (function() {
    var common, ld, storage;
    ld = require('lodash');
    storage = require('../storage.js');
    common = {};
    common.addSetInit = function(params, callback, strFields) {
      var isFS;
      if (!ld.isObject(params)) {
        throw new TypeError('parameters are mandatory for creation');
      }
      if (!ld.isFunction(callback)) {
        throw new TypeError('callback must be a function');
      }
      if (!ld.isUndefined(params._id)) {
        if (!ld.isString(params._id) || ld.isEmpty(params._id)) {
          throw new TypeError('_id, when defined, must be a string');
        }
      }
      if (strFields) {
        isFS = function(s) {
          return ld.isString(s) && !ld.isEmpty(s);
        };
        return ld.forEach(strFields, function(s) {
          if (!isFS(params[s])) {
            throw new TypeError(s + ' must be a string');
          }
        });
      }
    };
    common.checkExistence = function(key, callback) {
      return storage.db.get(key, function(err, res) {
        if (err) {
          return callback(err);
        }
        return callback(null, !!res);
      });
    };
    common.checkMultiExist = function(keys, callback) {
      var done;
      done = function(err, res) {
        if (keys.length) {
          if (err) {
            return callback(err);
          }
          if (!res) {
            return callback(null, res);
          }
          return common.checkExistence(keys.pop(), done);
        } else {
          return callback(null, res);
        }
      };
      return done(null, true);
    };
    common.getDel = function(del, PREFIX, 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');
      }
      key = PREFIX + key;
      return storage.db.get(key, function(err, obj) {
        if (err) {
          return callback(err);
        }
        if (ld.isUndefined(obj)) {
          return callback(new Error('key is not found'));
        }
        if (!del) {
          return callback(null, obj);
        } else {
          return storage.db.remove(key, function(err) {
            if (err) {
              return callback(err);
            }
            return callback(null, obj);
          });
        }
      });
    };
    return common;
  })();

}).call(this);