From 9ad7ce9ca82a7ef0a885ddfc929ed66a770d51c9 Mon Sep 17 00:00:00 2001 From: psychobunny Date: Fri, 11 Apr 2014 15:29:01 -0400 Subject: [PATCH] organizing redis driver --- src/database/redis.js | 361 +---------------------------------- src/database/redis/hash.js | 102 ++++++++++ src/database/redis/list.js | 23 +++ src/database/redis/main.js | 103 ++++++++++ src/database/redis/sets.js | 63 ++++++ src/database/redis/sorted.js | 63 ++++++ 6 files changed, 362 insertions(+), 353 deletions(-) create mode 100644 src/database/redis/hash.js create mode 100644 src/database/redis/list.js create mode 100644 src/database/redis/main.js create mode 100644 src/database/redis/sets.js create mode 100644 src/database/redis/sorted.js diff --git a/src/database/redis.js b/src/database/redis.js index f14863a83b..879c0c7705 100644 --- a/src/database/redis.js +++ b/src/database/redis.js @@ -55,8 +55,8 @@ return reds.client || (reds.client = redisClient); }; - postSearch = reds.createSearch('nodebbpostsearch'); - topicSearch = reds.createSearch('nodebbtopicsearch'); + module.postSearch = reds.createSearch('nodebbpostsearch'); + module.topicSearch = reds.createSearch('nodebbtopicsearch'); var db = parseInt(nconf.get('redis:database'), 10); @@ -69,360 +69,15 @@ }); } - if(typeof callback === 'function') { - callback(); - } - }; - - module.close = function() { - redisClient.quit(); - }; - - // - // Exported functions - // - module.searchIndex = function(key, content, id) { - if (key === 'post') { - postSearch.index(content, id); - } else if(key === 'topic') { - topicSearch.index(content, id); - } - }; - - module.search = function(key, term, limit, callback) { - function search(searchObj, callback) { - searchObj - .query(term) - .between(0, limit - 1) - .type('or') - .end(callback); - } - - if(key === 'post') { - search(postSearch, callback); - } else if(key === 'topic') { - search(topicSearch, callback); - } - }; - - module.searchRemove = function(key, id, callback) { - if(key === 'post') { - postSearch.remove(id); - } else if(key === 'topic') { - topicSearch.remove(id); - } + require('./redis/main')(redisClient, module); + require('./redis/hash')(redisClient, module); + require('./redis/sets')(redisClient, module); + require('./redis/sorted')(redisClient, module); + require('./redis/list')(redisClient, module); - if (typeof callback === 'function') { + if(typeof callback === 'function') { callback(); } }; - - module.flushdb = function(callback) { - redisClient.send_command('flushdb', [], function(err) { - if (typeof callback === 'function') { - callback(err); - } - }); - }; - - module.info = function(callback) { - redisClient.info(function (err, data) { - if(err) { - return callback(err); - } - - var lines = data.toString().split("\r\n").sort(); - var redisData = {}; - lines.forEach(function (line) { - var parts = line.split(':'); - if (parts[1]) { - redisData[parts[0]] = parts[1]; - } - }); - - redisData.raw = JSON.stringify(redisData, null, 4); - redisData.redis = true; - - callback(null, redisData); - }); - }; - - // key - - module.exists = function(key, callback) { - redisClient.exists(key, function(err, exists) { - callback(err, exists === 1); - }); - }; - - module.delete = function(key, callback) { - redisClient.del(key, callback); - }; - - module.get = function(key, callback) { - redisClient.get(key, callback); - }; - - module.set = function(key, value, callback) { - redisClient.set(key, value, callback); - }; - - module.rename = function(oldKey, newKey, callback) { - redisClient.rename(oldKey, newKey, callback); - }; - - module.expire = function(key, seconds, callback) { - redisClient.expire(key, seconds, callback); - }; - - module.expireAt = function(key, timestamp, callback) { - redisClient.expireat(key, timestamp, callback); - }; - - //hashes - - module.setObject = function(key, data, callback) { - // TODO: this crashes if callback isnt supplied -baris - redisClient.hmset(key, data, function(err, res) { - if(typeof callback === 'function') { - callback(err, res); - } - }); - }; - - module.setObjectField = function(key, field, value, callback) { - redisClient.hset(key, field, value, callback); - }; - - module.getObject = function(key, callback) { - redisClient.hgetall(key, callback); - }; - - module.getObjects = function(keys, callback) { - var multi = redisClient.multi(); - - for(var x=0; x