diff --git a/src/flags.js b/src/flags.js index af0f7c2efc..c8b79e47b1 100644 --- a/src/flags.js +++ b/src/flags.js @@ -445,7 +445,7 @@ Flags.getTargetCid = async function (type, id) { if (type === 'post') { return await posts.getCidByPid(id); } - return id; + return null; }; Flags.update = function (flagId, uid, changeset, callback) { diff --git a/src/upgrades/1.13.0/clean_flag_byCid.js b/src/upgrades/1.13.0/clean_flag_byCid.js new file mode 100644 index 0000000000..a8ea7188a8 --- /dev/null +++ b/src/upgrades/1.13.0/clean_flag_byCid.js @@ -0,0 +1,28 @@ +'use strict'; + +const db = require('../../database'); +const batch = require('../../batch'); + +module.exports = { + name: 'Clean flag byCid zsets', + timestamp: Date.UTC(2019, 8, 24), + method: async function (callback) { + const progress = this.progress; + + await batch.processSortedSet('flags:datetime', async function (flagIds) { + progress.incr(flagIds.length); + const flagData = await db.getObjects(flagIds.map(id => 'flag:' + id)); + const bulkRemove = []; + for (const flagObj of flagData) { + if (flagObj && flagObj.type === 'user' && flagObj.targetId && flagObj.flagId) { + bulkRemove.push(['flags:byCid:' + flagObj.targetId, flagObj.flagId]); + } + } + + await db.sortedSetRemoveBulk(bulkRemove); + }, { + progress: progress, + }); + callback(); + }, +};