upgrade topics:tid to sorted set, topics:recent doesnt have deleted topics

v1.18.x
Baris Soner Usakli 11 years ago
parent 8506819a7d
commit 1e44ca3a0f

@ -684,6 +684,12 @@
});
}
module.isSortedSetMember = function(key, value, callback) {
module.sortedSetScore(key, value, function(err, score) {
callback(err, !!score);
});
}
module.sortedSetsScore = function(keys, value, callback) {
if(value !== null && value !== undefined) {
value = value.toString();

@ -378,6 +378,12 @@
redisClient.zscore(key, value, callback);
}
module.isSortedSetMember = function(key, value, callback) {
module.sortedSetScore(key, value, function(err, score) {
callback(err, !!score);
});
}
module.sortedSetsScore = function(keys, value, callback) {
var multi = redisClient.multi();

@ -18,7 +18,7 @@ var winston = require('winston'),
ThreadTools.exists = function(tid, callback) {
db.isSetMember('topics:tid', tid, function(err, ismember) {
db.isSortedSetMember('topics:tid', tid, function(err, ismember) {
if (err) {
callback(false);

@ -47,7 +47,7 @@ var async = require('async'),
return callback(err);
}
db.setAdd('topics:tid', tid);
db.sortedSetAdd('topics:tid', timestamp, tid);
db.searchIndex('topic', title, tid);
user.addTopicIdToUser(uid, tid, timestamp);
@ -906,7 +906,7 @@ var async = require('async'),
};
Topics.getAllTopics = function(start, end, callback) {
db.getSortedSetRevRange('topics:recent', start, end, function(err, tids) {
db.getSortedSetRevRange('topics:tid', start, end, function(err, tids) {
if(err) {
return callback(err);
}
@ -918,7 +918,7 @@ var async = require('async'),
};
Topics.markAllRead = function(uid, callback) {
db.getSetMembers('topics:tid', function(err, tids) {
db.getSortedSetRange('topics:tid', 0, -1, function(err, tids) {
if (err) {
return callback(err);
}
@ -1189,7 +1189,7 @@ var async = require('async'),
}
Topics.reIndexAll = function(callback) {
db.getSetMembers('topics:tid', function(err, tids) {
db.getSortedSetRange('topics:tid', 0, -1, function(err, tids) {
if (err) {
return callback(err);
}

@ -19,7 +19,7 @@ var db = require('./database'),
Upgrade.check = function(callback) {
// IMPORTANT: REMEMBER TO UPDATE VALUE OF latestSchema
var latestSchema = new Date(2014, 1, 9, 20, 50).getTime();
var latestSchema = new Date(2014, 1, 14, 20, 50).getTime();
db.get('schemaDate', function(err, value) {
if (parseInt(value, 10) >= latestSchema) {
@ -579,7 +579,41 @@ Upgrade.upgrade = function(callback) {
winston.info('[2014/2/9] Remove Topic LastFeedUpdate value, as feeds are now on-demand - skipped');
next();
}
}
},
function(next) {
thisSchemaDate = new Date(2014, 1, 14, 20, 50).getTime();
if (schemaDate < thisSchemaDate) {
updatesMade = true;
db.getSetMembers('topics:tid', function(err, tids) {
if(err) {
return next(err);
}
db.delete('topics:tid', function(err) {
if(err) {
return next(err);
}
async.each(tids, function(tid, next) {
Topics.getTopicField(tid, 'timestamp', function(err, timestamp) {
db.sortedSetAdd('topics:tid', timestamp, tid, next);
});
}, function(err) {
if(err) {
return next(err);
}
winston.info('[2014/2/14] Upgraded topics to sorted set');
next();
})
});
})
} else {
winston.info('[2014/2/14] Upgrade topics to sorted set - skipped');
next();
}
},
// Add new schema updates here
// IMPORTANT: REMEMBER TO UPDATE VALUE OF latestSchema IN LINE 17!!!
], function(err) {

Loading…
Cancel
Save