fix: handle delete and update for categories:name zset

v1.18.x
Barış Soner Uşaklı 4 years ago
parent 53a6dca3c6
commit e8429f509b

@ -21,12 +21,17 @@ module.exports = function (Categories) {
await async.eachLimit(pinnedTids, 10, async function (tid) {
await topics.purgePostsAndTopic(tid, uid);
});
await purgeCategory(cid);
plugins.hooks.fire('action:category.delete', { cid: cid, uid: uid });
const categoryData = await Categories.getCategoryData(cid);
await purgeCategory(categoryData);
plugins.hooks.fire('action:category.delete', { cid: cid, uid: uid, category: categoryData });
};
async function purgeCategory(cid) {
await db.sortedSetRemove('categories:cid', cid);
async function purgeCategory(categoryData) {
const cid = categoryData.cid;
await db.sortedSetRemoveBulk([
['categories:cid', cid],
['categories:name', categoryData.name.substr(0, 200).toLowerCase() + ':' + cid],
]);
await removeFromParent(cid);
await deleteTags(cid);
await db.deleteAll([

@ -48,7 +48,10 @@ module.exports = function (Categories) {
return await updateParent(cid, value);
} else if (key === 'tagWhitelist') {
return await updateTagWhitelist(cid, value);
} else if (key === 'name') {
return await updateName(cid, value);
}
await db.setObjectField('category:' + cid, key, value);
if (key === 'order') {
await updateOrder(cid, value);
@ -95,4 +98,11 @@ module.exports = function (Categories) {
const parsedDescription = await plugins.hooks.fire('filter:parse.raw', description);
await Categories.setCategoryField(cid, 'descriptionParsed', parsedDescription);
};
async function updateName(cid, newName) {
const oldName = await Categories.getCategoryField(cid, 'name');
await db.sortedSetRemove('categories:name', oldName.substr(0, 200).toLowerCase() + ':' + cid);
await db.sortedSetAdd('categories:name', 0, newName.substr(0, 200).toLowerCase() + ':' + cid);
await db.setObjectField('category:' + cid, 'name', newName);
}
};

Loading…
Cancel
Save