diff --git a/gg.js b/gg.js new file mode 100644 index 0000000000..c49efdb2af --- /dev/null +++ b/gg.js @@ -0,0 +1,48 @@ +/* eslint-disable no-await-in-loop */ +/* globals require, console, process */ + +'use strict'; + +const nconf = require('nconf'); + +nconf.file({ + file: 'config.json', +}); + +nconf.defaults({ + base_dir: __dirname, + views_dir: './build/public/templates', + upload_path: 'public/uploads', +}); + +const db = require('./src/database'); + +db.init(async (err) => { + if (err) { + console.log(`NodeBB could not connect to your database. Error: ${err.message}`); + process.exit(); + } + + await search(); + console.log('done'); + process.exit(); +}); + +async function search() { + const batch = require('./src/batch'); + const topics = require('./src/topics'); + await batch.processSortedSet('topics:tid', async (tids) => { + await Promise.all(tids.map(async (tid) => { + const topicData = await db.getObjectFields(`topic:${tid}`, ['cid', 'tid', 'uid', 'oldCid', 'timestamp']); + if (topicData.cid && topicData.oldCid) { + const isMember = await db.isSortedSetMember(`cid:${topicData.oldCid}:uid:${topicData.uid}:tids`, topicData.tid); + if (isMember) { + await db.sortedSetRemove(`cid:${topicData.oldCid}:uid:${topicData.uid}:tids`, tid); + await db.sortedSetAdd(`cid:${topicData.cid}:uid:${topicData.uid}:tids`, topicData.timestamp, tid); + } + } + })); + }, { + batch: 500, + }); +} \ No newline at end of file diff --git a/src/upgrades/1.7.4/fix_user_topics_per_category.js b/src/upgrades/1.7.4/fix_user_topics_per_category.js index 5ee19fb41f..75ffef2c24 100644 --- a/src/upgrades/1.7.4/fix_user_topics_per_category.js +++ b/src/upgrades/1.7.4/fix_user_topics_per_category.js @@ -14,7 +14,7 @@ module.exports = { progress.incr(); const topicData = await db.getObjectFields(`topic:${tid}`, ['cid', 'tid', 'uid', 'oldCid', 'timestamp']); if (topicData.cid && topicData.oldCid) { - const isMember = await db.isSortedSetMember(`cid:${topicData.oldCid}:uid:${topicData.uid}`, topicData.tid); + const isMember = await db.isSortedSetMember(`cid:${topicData.oldCid}:uid:${topicData.uid}:tids`, topicData.tid); if (isMember) { await db.sortedSetRemove(`cid:${topicData.oldCid}:uid:${topicData.uid}:tids`, tid); await db.sortedSetAdd(`cid:${topicData.cid}:uid:${topicData.uid}:tids`, topicData.timestamp, tid);