Files
NodeBB/src/upgrades/4.9.0/postsRemote_zset.js
Barış Soner Uşaklı de1f04d9d8 refactor: dont store ap pids in posts:pid
new zset postsRemote:pid
in topic purge only make 1 db call to reduce counters
2026-02-24 17:36:17 -05:00

38 lines
1.0 KiB
JavaScript

'use strict';
const db = require('../../database');
const batch = require('../../batch');
const utils = require('../../utils');
module.exports = {
name: 'Move ap pids from posts:pid to postsRemote:pid',
timestamp: Date.UTC(2026, 1, 24),
method: async function () {
const { progress } = this;
progress.total = await db.sortedSetCard('posts:pid');
const removePosts = [];
await batch.processSortedSet('posts:pid', async (postData) => {
const apPosts = postData.filter(post => !utils.isNumber(post.value));
removePosts.push(...apPosts.map(post => post.value));
await db.sortedSetAdd(
'postsRemote:pid',
apPosts.map(p => p.score),
apPosts.map(p => p.value)
);
progress.incr(postData.length);
}, {
batch: 500,
withScores: true,
});
await batch.processArray(removePosts, async (pids) => {
await db.sortedSetsRemove(['posts:pid', 'posts:votes'], pids);
}, {
batch: 500,
});
const postCount = await db.sortedSetCard('posts:pid');
await db.setObjectField('global', 'postCount', postCount);
},
};