refactor: dont store ap pids in posts:pid

new zset postsRemote:pid
in topic purge only make 1 db call to reduce counters
This commit is contained in:
Barış Soner Uşaklı
2026-02-24 17:36:17 -05:00
parent 1d48a6c06c
commit de1f04d9d8
9 changed files with 108 additions and 15 deletions

View File

@@ -59,10 +59,10 @@ module.exports = function (Posts) {
const topicData = await topics.getTopicFields(tid, ['cid', 'pinned']);
postData.cid = topicData.cid;
const isRemote = !utils.isNumber(pid);
await Promise.all([
db.sortedSetAdd('posts:pid', timestamp, postData.pid),
utils.isNumber(pid) ? db.incrObjectField('global', 'postCount') : null,
db.sortedSetAdd(!isRemote ? 'posts:pid' : 'postsRemote:pid', timestamp, postData.pid),
!isRemote ? db.incrObjectField('global', 'postCount') : null,
user.onNewPostMade(postData),
topics.onNewPostMade(postData),
categories.onNewPostMade(topicData.cid, topicData.pinned, postData),

View File

@@ -79,7 +79,9 @@ module.exports = function (Posts) {
deleteFromGroups(pids),
deleteDiffs(pids),
deleteFromUploads(pids),
db.sortedSetsRemove(['posts:pid', 'posts:votes', 'posts:flagged'], pids),
db.sortedSetsRemove([
'posts:pid', 'posts:votes', 'posts:flagged', 'postsRemote:pid',
], pids),
Posts.attachments.empty(pids),
activitypub.notes.delete(pids),
db.deleteAll(pids.map(pid => `pid:${pid}:editors`)),

View File

@@ -260,7 +260,9 @@ module.exports = function (Posts) {
}
await Promise.all([
updateTopicVoteCount(postData),
db.sortedSetAdd('posts:votes', postData.votes, postData.pid),
utils.isNumber(postData.pid) ?
db.sortedSetAdd('posts:votes', postData.votes, postData.pid) :
null,
Posts.setPostFields(postData.pid, {
upvotes: postData.upvotes,
downvotes: postData.downvotes,