From 6bedb3a17d5d2508ae5e5ee3dc1a472118d4b5bd Mon Sep 17 00:00:00 2001 From: LittleSheep Date: Sun, 23 Feb 2025 00:58:20 +0800 Subject: [PATCH] :bug: Fix flush reading anchor --- pkg/internal/services/reading_anchor.go | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/pkg/internal/services/reading_anchor.go b/pkg/internal/services/reading_anchor.go index ceb35e4..79098af 100644 --- a/pkg/internal/services/reading_anchor.go +++ b/pkg/internal/services/reading_anchor.go @@ -4,7 +4,6 @@ import ( "git.solsynth.dev/hypernet/messaging/pkg/internal/database" "git.solsynth.dev/hypernet/messaging/pkg/internal/models" "github.com/rs/zerolog/log" - "github.com/samber/lo" "gorm.io/gorm" ) @@ -22,19 +21,15 @@ func FlushReadingAnchor() { if len(readingAnchorQueue) == 0 { 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 { - pairs = append(pairs, map[string]any{ - "id": k, - "reading_anchor": gorm.Expr("GREATEST(reading_anchor, ?)", v), - }) - } - if err := database.C.Model(&models.ChannelMember{}). - Where("id IN ?", idSet). - Updates(pairs).Error; err != nil { - log.Error().Err(err).Msg("An error occurred when flushing reading anchor...") + if err := database.C.Model(&models.ChannelMember{}). + Where("id = ?", k). + Updates(map[string]any{ + "reading_anchor": gorm.Expr("GREATEST(reading_anchor, ?)", v), + }).Error; err != nil { + log.Error().Err(err).Msg("An error occurred when flushing reading anchor...") + return + } } + clear(readingAnchorQueue) }