'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 () {
		const { progress } = this;

		await batch.processSortedSet('flags:datetime', async (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,
		});
	},
};