|
|
|
@ -32,7 +32,7 @@ module.exports = function(Topics) {
|
|
|
|
|
db.sortedSetRemove('cid:' + topicData.cid + ':pids', pids, next);
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
], function(err, results) {
|
|
|
|
|
], function(err) {
|
|
|
|
|
callback(err);
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
@ -79,7 +79,7 @@ module.exports = function(Topics) {
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
], function(err, results) {
|
|
|
|
|
], function(err) {
|
|
|
|
|
callback(err);
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
@ -109,28 +109,35 @@ module.exports = function(Topics) {
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Topics.purge = function(tid, uid, callback) {
|
|
|
|
|
async.parallel([
|
|
|
|
|
function(next) {
|
|
|
|
|
db.deleteAll([
|
|
|
|
|
'tid:' + tid + ':followers',
|
|
|
|
|
'tid:' + tid + ':ignorers',
|
|
|
|
|
'tid:' + tid + ':posts',
|
|
|
|
|
'tid:' + tid + ':posts:votes',
|
|
|
|
|
'tid:' + tid + ':bookmarks',
|
|
|
|
|
'tid:' + tid + ':posters'
|
|
|
|
|
], next);
|
|
|
|
|
},
|
|
|
|
|
function(next) {
|
|
|
|
|
db.sortedSetsRemove(['topics:tid', 'topics:recent', 'topics:posts', 'topics:views'], tid, next);
|
|
|
|
|
},
|
|
|
|
|
function(next) {
|
|
|
|
|
deleteTopicFromCategoryAndUser(tid, next);
|
|
|
|
|
},
|
|
|
|
|
async.waterfall([
|
|
|
|
|
function(next) {
|
|
|
|
|
Topics.deleteTopicTags(tid, next);
|
|
|
|
|
deleteFromFollowersIgnorers(tid, next);
|
|
|
|
|
},
|
|
|
|
|
function(next) {
|
|
|
|
|
reduceCounters(tid, next);
|
|
|
|
|
async.parallel([
|
|
|
|
|
function(next) {
|
|
|
|
|
db.deleteAll([
|
|
|
|
|
'tid:' + tid + ':followers',
|
|
|
|
|
'tid:' + tid + ':ignorers',
|
|
|
|
|
'tid:' + tid + ':posts',
|
|
|
|
|
'tid:' + tid + ':posts:votes',
|
|
|
|
|
'tid:' + tid + ':bookmarks',
|
|
|
|
|
'tid:' + tid + ':posters'
|
|
|
|
|
], next);
|
|
|
|
|
},
|
|
|
|
|
function(next) {
|
|
|
|
|
db.sortedSetsRemove(['topics:tid', 'topics:recent', 'topics:posts', 'topics:views'], tid, next);
|
|
|
|
|
},
|
|
|
|
|
function(next) {
|
|
|
|
|
deleteTopicFromCategoryAndUser(tid, next);
|
|
|
|
|
},
|
|
|
|
|
function(next) {
|
|
|
|
|
Topics.deleteTopicTags(tid, next);
|
|
|
|
|
},
|
|
|
|
|
function(next) {
|
|
|
|
|
reduceCounters(tid, next);
|
|
|
|
|
}
|
|
|
|
|
], next);
|
|
|
|
|
}
|
|
|
|
|
], function(err) {
|
|
|
|
|
if (err) {
|
|
|
|
@ -141,6 +148,26 @@ module.exports = function(Topics) {
|
|
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
function deleteFromFollowersIgnorers(tid, callback) {
|
|
|
|
|
async.waterfall([
|
|
|
|
|
function(next) {
|
|
|
|
|
async.parallel({
|
|
|
|
|
followers: async.apply(db.getSetMembers, 'tid:' + tid + ':followers'),
|
|
|
|
|
ignorers: async.apply(db.getSetMembers, 'tid:' + tid + ':ignorers')
|
|
|
|
|
}, next);
|
|
|
|
|
},
|
|
|
|
|
function(results, next) {
|
|
|
|
|
var followerKeys = results.followers.map(function(uid) {
|
|
|
|
|
return 'uid:' + uid + ':followed_tids';
|
|
|
|
|
});
|
|
|
|
|
var ignorerKeys = results.ignorers.map(function(uid) {
|
|
|
|
|
return 'uid:' + uid + 'ignored_tids';
|
|
|
|
|
});
|
|
|
|
|
db.sortedSetsRemove(followerKeys.concat(ignorerKeys), tid, next);
|
|
|
|
|
}
|
|
|
|
|
], callback);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function deleteTopicFromCategoryAndUser(tid, callback) {
|
|
|
|
|
Topics.getTopicFields(tid, ['cid', 'uid'], function(err, topicData) {
|
|
|
|
|
if (err) {
|
|
|
|
|