From a651d154ce3fdbc5884f8aeee8f255a4918e8928 Mon Sep 17 00:00:00 2001 From: Baris Usakli Date: Tue, 24 Sep 2019 12:22:40 -0400 Subject: [PATCH] fix: #7921, dont create wrong entries in db for flag upgrade script to remove wrong entries --- src/flags.js | 2 +- src/upgrades/1.13.0/clean_flag_byCid.js | 28 +++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 src/upgrades/1.13.0/clean_flag_byCid.js 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(); + }, +};