🐛 Fix flush reading anchor

This commit is contained in:
LittleSheep 2025-02-23 00:58:20 +08:00
parent bce86224bb
commit 6bedb3a17d

View File

@ -4,7 +4,6 @@ import (
"git.solsynth.dev/hypernet/messaging/pkg/internal/database" "git.solsynth.dev/hypernet/messaging/pkg/internal/database"
"git.solsynth.dev/hypernet/messaging/pkg/internal/models" "git.solsynth.dev/hypernet/messaging/pkg/internal/models"
"github.com/rs/zerolog/log" "github.com/rs/zerolog/log"
"github.com/samber/lo"
"gorm.io/gorm" "gorm.io/gorm"
) )
@ -22,19 +21,15 @@ func FlushReadingAnchor() {
if len(readingAnchorQueue) == 0 { if len(readingAnchorQueue) == 0 {
return return
} }
idSet := lo.Uniq(lo.Map(lo.Keys(readingAnchorQueue), func(item uint, _ int) uint {
return item
}))
var pairs []map[string]any
for k, v := range readingAnchorQueue { for k, v := range readingAnchorQueue {
pairs = append(pairs, map[string]any{ if err := database.C.Model(&models.ChannelMember{}).
"id": k, Where("id = ?", k).
"reading_anchor": gorm.Expr("GREATEST(reading_anchor, ?)", v), Updates(map[string]any{
}) "reading_anchor": gorm.Expr("GREATEST(reading_anchor, ?)", v),
} }).Error; err != nil {
if err := database.C.Model(&models.ChannelMember{}). log.Error().Err(err).Msg("An error occurred when flushing reading anchor...")
Where("id IN ?", idSet). return
Updates(pairs).Error; err != nil { }
log.Error().Err(err).Msg("An error occurred when flushing reading anchor...")
} }
clear(readingAnchorQueue)
} }