fix: dont store ap tids in topics:tid

create new zset topicsRemote:tid
upgrade script to copy over ap tids
This commit is contained in:
Barış Soner Uşaklı
2026-02-24 10:47:59 -05:00
parent 003e6d0775
commit e8ef2e5c55
2 changed files with 29 additions and 1 deletions

View File

@@ -57,7 +57,7 @@ module.exports = function (Topics) {
await db.setObject(`topic:${topicData.tid}`, topicData);
const timestampedSortedSetKeys = [
'topics:tid',
utils.isNumber(tid) ? 'topics:tid' : 'topicsRemote:tid',
`cid:${topicData.cid}:tids`,
`cid:${topicData.cid}:tids:create`,
`cid:${topicData.cid}:uid:${topicData.uid}:tids`,

View File

@@ -0,0 +1,28 @@
'use strict';
const db = require('../../database');
const batch = require('../../batch');
const utils = require('../../utils');
module.exports = {
name: 'Move ap tids from topics:tid to topicsRemote:tid',
timestamp: Date.UTC(2026, 1, 24),
method: async function () {
const { progress } = this;
progress.total = await db.sortedSetCard('topics:tid');
await batch.processSortedSet('topics:tid', async (topicData) => {
const apTopics = topicData.filter(topic => !utils.isNumber(topic.value));
await db.sortedSetRemove('topics:tid', apTopics.map(topic => topic.value));
await db.sortedSetAdd(
'topicsRemote:tid',
apTopics.map(t => t.score),
apTopics.map(t => t.value)
);
progress.incr(topicData.length);
}, {
batch: 500,
withScores: true,
});
},
};