From a7582e2cca6e0fa2ca22da11352aaed093340140 Mon Sep 17 00:00:00 2001 From: psychobunny Date: Fri, 11 Apr 2014 15:47:49 -0400 Subject: [PATCH] organized level helpers ala mongo driver --- src/database/level.js | 18 ++++++++++++++++++ src/database/level/hash.js | 4 +++- src/database/level/list.js | 2 ++ src/database/level/main.js | 15 ++------------- src/database/level/sets.js | 4 +++- src/database/level/sorted.js | 2 ++ 6 files changed, 30 insertions(+), 15 deletions(-) diff --git a/src/database/level.js b/src/database/level.js index f249d55d2e..5674f6dbf7 100644 --- a/src/database/level.js +++ b/src/database/level.js @@ -69,4 +69,22 @@ } }; + var helpers = {}; + + helpers.iterator = function(fn, keys, value, callback) { + var results = []; + + async.each(keys, function(key, next) { + module[fn](key, value, function(err, result) { + results.push(result); + next(); + }); + }, function(err) { + callback(err, results); + }); + }; + + module.helpers = module.helpers || {}; + module.helpers.level = helpers; + }(exports)); \ No newline at end of file diff --git a/src/database/level/hash.js b/src/database/level/hash.js index 360d37d015..c321fc9dae 100644 --- a/src/database/level/hash.js +++ b/src/database/level/hash.js @@ -3,6 +3,8 @@ var async = require('async'); module.exports = function(db, module) { + var helpers = module.helpers.level; + module.setObject = function(key, obj, callback) { async.parallel([ function(next) { @@ -82,7 +84,7 @@ module.exports = function(db, module) { }; module.getObjectsFields = function(keys, fields, callback) { - module.iterator('getObjectFields', keys, fields, callback); + helpers.iterator('getObjectFields', keys, fields, callback); }; module.getObjectKeys = function(key, callback) { diff --git a/src/database/level/list.js b/src/database/level/list.js index d36526a36e..28a899f001 100644 --- a/src/database/level/list.js +++ b/src/database/level/list.js @@ -1,6 +1,8 @@ "use strict"; module.exports = function(db, module) { + var helpers = module.helpers.level; + module.listPrepend = function(key, value, callback) { module.getListRange(key, 0, -1, function(err, list) { var arr = list || []; diff --git a/src/database/level/main.js b/src/database/level/main.js index 78573475f3..e3ba86d1e0 100644 --- a/src/database/level/main.js +++ b/src/database/level/main.js @@ -4,6 +4,8 @@ var nconf = require('nconf'), async = require('async'); module.exports = function(db, module) { + var helpers = module.helpers.level; + module.close = function(callback) { db.close(callback); }; @@ -78,18 +80,5 @@ module.exports = function(db, module) { // <__< }; - module.iterator = function(fn, keys, value, callback) { - var results = []; - - async.each(keys, function(key, next) { - module[fn](key, value, function(err, result) { - results.push(result); - next(); - }); - }, function(err) { - callback(err, results); - }); - }; - return module; }; \ No newline at end of file diff --git a/src/database/level/sets.js b/src/database/level/sets.js index 0c0ef366bb..bc5aacf1b5 100644 --- a/src/database/level/sets.js +++ b/src/database/level/sets.js @@ -3,6 +3,8 @@ var async = require('async'); module.exports = function(db, module) { + var helpers = module.helpers.level; + module.setAdd = function(key, value, callback) { module.getListRange(key, 0, -1, function(err, set) { if (set.indexOf(value) === -1) { @@ -40,7 +42,7 @@ module.exports = function(db, module) { }; module.isMemberOfSets = function(sets, value, callback) { - module.iterator('isSetMember', sets, value, callback); + helpers.iterator('isSetMember', sets, value, callback); }; module.getSetMembers = function(key, callback) { diff --git a/src/database/level/sorted.js b/src/database/level/sorted.js index cf99182286..b64245c89b 100644 --- a/src/database/level/sorted.js +++ b/src/database/level/sorted.js @@ -4,6 +4,8 @@ var async = require('async'); module.exports = function(db, module) { + var helpers = module.helpers.level; + module.sortedSetAdd = function(key, score, value, callback) { module.getListRange(key, 0, -1, function(err, set) { set = set.filter(function(a) {return a.value !== value.toString();});