removed couple RDB.multis

v1.18.x
Baris Soner Usakli 11 years ago
parent b547d3577b
commit 53a7eab3e8

@ -439,6 +439,20 @@
}); });
} }
module.sortedSetRank = function(key, value, callback) {
module.getSortedSetRange(key, 0, -1, function(err, result) {
if(err) {
return callback(err);
}
var rank = result.indexOf(value);
if(rank === -1) {
return callback(null, null);
}
callback(null, rank);
});
}
// lists // lists
module.listPrepend = function(key, value, callback) { module.listPrepend = function(key, value, callback) {
module.isObjectField(key, 'array', function(err, exists) { module.isObjectField(key, 'array', function(err, exists) {
@ -471,6 +485,26 @@
}); });
} }
module.listRemoveLast = function(key, callback) {
module.getListRange(key, -1, 0, function(err, value) {
if(err) {
return callback(err);
}
db.collection('objects').update({_key: key }, { $pop: { array: 1 } }, function(err, result) {
if(err) {
return callback(err);
}
if(value && value.length) {
callback(err, value[0]);
} else {
callback(err, null);
}
});
});
}
module.getListRange = function(key, start, stop, callback) { module.getListRange = function(key, start, stop, callback) {
if(stop === -1) { if(stop === -1) {

@ -291,6 +291,10 @@
redisClient.zcount(key, min, max, callback); redisClient.zcount(key, min, max, callback);
} }
module.sortedSetRank = function(key, value, callback) {
redisClient.zrank(key, value, callback);
}
// lists // lists
module.listPrepend = function(key, value, callback) { module.listPrepend = function(key, value, callback) {
redisClient.lpush(key, value, callback); redisClient.lpush(key, value, callback);
@ -300,11 +304,16 @@
redisClient.rpush(key, value, callback); redisClient.rpush(key, value, callback);
} }
module.listRemoveLast = function(key, callback) {
redisClient.rpop(key, callback);
}
module.getListRange = function(key, start, stop, callback) { module.getListRange = function(key, start, stop, callback) {
redisClient.lrange(key, start, stop, callback); redisClient.lrange(key, start, stop, callback);
} }
}(exports)); }(exports));

@ -18,28 +18,22 @@ var async = require('async'),
}; };
Notifications.get = function(nid, uid, callback) { Notifications.get = function(nid, uid, callback) {
RDB.multi()
.hmget('notifications:' + nid, 'text', 'score', 'path', 'datetime', 'uniqueId')
.zrank('uid:' + uid + ':notifications:read', nid)
.exists('notifications:' + nid)
.exec(function(err, results) {
var notification = results[0],
readIdx = results[1];
if (!results[2]) {
return callback(null);
}
callback({ db.exists('nofitications:' + nid, function(err, exists) {
nid: nid,
text: notification[0], if(!exists) {
score: notification[1], return callback(null);
path: notification[2], }
datetime: notification[3],
uniqueId: notification[4], db.sortedSetRank('uid:' + uid + ':notifications:read', nid, function(err, rank) {
read: readIdx !== null ? true : false
db.getObjectFields('notifications:' + nid, ['nid', 'text', 'score', 'path', 'datetime', 'uniqueId'], function(err, notification) {
notification.read = rank !== null ? true:false;
callback(notification);
}); });
}); });
});
}; };
Notifications.create = function(text, path, uniqueId, callback) { Notifications.create = function(text, path, uniqueId, callback) {

@ -197,8 +197,17 @@ var DebugRoute = function(app) {
}); });
} }
function listRemoveLast(callback) {
db.listRemoveLast('myList5', function(err, data) {
console.log('listRemoveLast return', data);
callback(err, {'listRemoveLast': data});
});
}
function getListRange(callback) { function getListRange(callback) {
db.getListRange('myList5', 0, 5, function(err, data) { db.getListRange('myList5', 0, -1, function(err, data) {
console.log('getListRange return', data); console.log('getListRange return', data);
callback(err, {'getListRange': data}); callback(err, {'getListRange': data});
}); });
@ -306,8 +315,10 @@ var DebugRoute = function(app) {
]; ];
var listTasks = [ var listTasks = [
listAppend, //listAppend,
listPrepend, //listPrepend,
getListRange,
listRemoveLast,
getListRange getListRange
]; ];
@ -331,7 +342,7 @@ var DebugRoute = function(app) {
isMemberOfSets isMemberOfSets
]; ];
require('async').series(setTasks, function(err, results) { require('async').series(listTasks, function(err, results) {
if(err) { if(err) {
console.log(err); console.log(err);
res.send(err.message); res.send(err.message);

@ -1005,14 +1005,13 @@ var bcrypt = require('bcrypt'),
before = new Date(parseInt(before, 10)); before = new Date(parseInt(before, 10));
} }
// TODO : figure out how to do this with dbal var args1 = ['uid:' + uid + ':notifications:read', before ? before.getTime(): now.getTime(), -Infinity, 'LIMIT', 0, limit];
RDB.multi() var args2 = ['uid:' + uid + ':notifications:unread', before ? before.getTime(): now.getTime(), -Infinity, 'LIMIT', 0, limit];
.zrevrangebyscore('uid:' + uid + ':notifications:read', before ? before.getTime(): now.getTime(), -Infinity, 'LIMIT', 0, limit)
.zrevrangebyscore('uid:' + uid + ':notifications:unread', before ? before.getTime(): now.getTime(), -Infinity, 'LIMIT', 0, limit)
.exec(function(err, results) {
// Merge the read and unread notifications
var nids = results[0].concat(results[1]);
db.getSortedSetRevRangeByScore(args1, function(err, results1) {
db.getSortedSetRevRangeByScore(args2, function(err, results2) {
var nids = results1.concat(results2);
async.map(nids, function(nid, next) { async.map(nids, function(nid, next) {
notifications.get(nid, uid, function(notif_data) { notifications.get(nid, uid, function(notif_data) {
next(null, notif_data); next(null, notif_data);
@ -1032,6 +1031,8 @@ var bcrypt = require('bcrypt'),
callback(err, notifs); callback(err, notifs);
}); });
}); });
});
}, },
getUnreadCount: function(uid, callback) { getUnreadCount: function(uid, callback) {
db.sortedSetCount('uid:' + uid + ':notifications:unread', 0, 10, callback); db.sortedSetCount('uid:' + uid + ':notifications:unread', 0, 10, callback);

@ -62,9 +62,11 @@ describe('Categories', function() {
}); });
after(function() { after(function() {
// TODO : replace with dbal
RDB.multi() RDB.multi()
.del('category:'+categoryObj.cid) .del('category:'+categoryObj.cid)
.rpop('categories:cid') .rpop('categories:cid')
.exec(); .exec();
}); });
}); });
Loading…
Cancel
Save