mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-10-27 09:06:15 +01:00
fix: handle delete and update for categories:name zset
This commit is contained in:
@@ -21,12 +21,17 @@ module.exports = function (Categories) {
|
|||||||
await async.eachLimit(pinnedTids, 10, async function (tid) {
|
await async.eachLimit(pinnedTids, 10, async function (tid) {
|
||||||
await topics.purgePostsAndTopic(tid, uid);
|
await topics.purgePostsAndTopic(tid, uid);
|
||||||
});
|
});
|
||||||
await purgeCategory(cid);
|
const categoryData = await Categories.getCategoryData(cid);
|
||||||
plugins.hooks.fire('action:category.delete', { cid: cid, uid: uid });
|
await purgeCategory(categoryData);
|
||||||
|
plugins.hooks.fire('action:category.delete', { cid: cid, uid: uid, category: categoryData });
|
||||||
};
|
};
|
||||||
|
|
||||||
async function purgeCategory(cid) {
|
async function purgeCategory(categoryData) {
|
||||||
await db.sortedSetRemove('categories:cid', cid);
|
const cid = categoryData.cid;
|
||||||
|
await db.sortedSetRemoveBulk([
|
||||||
|
['categories:cid', cid],
|
||||||
|
['categories:name', categoryData.name.substr(0, 200).toLowerCase() + ':' + cid],
|
||||||
|
]);
|
||||||
await removeFromParent(cid);
|
await removeFromParent(cid);
|
||||||
await deleteTags(cid);
|
await deleteTags(cid);
|
||||||
await db.deleteAll([
|
await db.deleteAll([
|
||||||
|
|||||||
@@ -48,7 +48,10 @@ module.exports = function (Categories) {
|
|||||||
return await updateParent(cid, value);
|
return await updateParent(cid, value);
|
||||||
} else if (key === 'tagWhitelist') {
|
} else if (key === 'tagWhitelist') {
|
||||||
return await updateTagWhitelist(cid, value);
|
return await updateTagWhitelist(cid, value);
|
||||||
|
} else if (key === 'name') {
|
||||||
|
return await updateName(cid, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
await db.setObjectField('category:' + cid, key, value);
|
await db.setObjectField('category:' + cid, key, value);
|
||||||
if (key === 'order') {
|
if (key === 'order') {
|
||||||
await updateOrder(cid, value);
|
await updateOrder(cid, value);
|
||||||
@@ -95,4 +98,11 @@ module.exports = function (Categories) {
|
|||||||
const parsedDescription = await plugins.hooks.fire('filter:parse.raw', description);
|
const parsedDescription = await plugins.hooks.fire('filter:parse.raw', description);
|
||||||
await Categories.setCategoryField(cid, 'descriptionParsed', parsedDescription);
|
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);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user