From 11cc168b3adddba859e34d0bb1f0ed9c0a045934 Mon Sep 17 00:00:00 2001 From: Pijus Kamandulis Date: Fri, 4 Jul 2025 18:42:35 +0300 Subject: [PATCH] Cache current day stats for 5m --- database/db.go | 9 +++++++-- jobs/recalculateCurrentDayStatsJob.go | 1 + 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/database/db.go b/database/db.go index 4f5041b..e91bcc9 100644 --- a/database/db.go +++ b/database/db.go @@ -258,10 +258,9 @@ func GetDailyStats(db *clover.DB, date time.Time) (*models.DailyStats, error) { dateStr := date.Format(time.DateOnly) // Check if stats already exist - isToday := dateStr == time.Now().UTC().Format(time.DateOnly) existingDoc, err := db.FindFirst(c.NewQuery(DailyStatsCollectionName). Where(c.Field("Date").Eq(dateStr))) - if !isToday && err == nil && existingDoc != nil { + if err == nil && existingDoc != nil { var stats models.DailyStats if err := existingDoc.Unmarshal(&stats); err != nil { return nil, fmt.Errorf("failed to unmarshal daily stats: %v", err) @@ -307,6 +306,12 @@ func GetDailyStats(db *clover.DB, date time.Time) (*models.DailyStats, error) { // Insert or update the daily stats in the collection doc := document.NewDocumentOf(stats) + + isToday := dateStr == time.Now().UTC().Format(time.DateOnly) + if isToday { + doc.SetExpiresAt(time.Now().Add(5 * time.Minute)) + } + if _, err := db.InsertOne(DailyStatsCollectionName, doc); err != nil { return nil, fmt.Errorf("failed to insert daily stats: %v", err) } diff --git a/jobs/recalculateCurrentDayStatsJob.go b/jobs/recalculateCurrentDayStatsJob.go index f523390..de8c469 100644 --- a/jobs/recalculateCurrentDayStatsJob.go +++ b/jobs/recalculateCurrentDayStatsJob.go @@ -32,6 +32,7 @@ func (job *RecalculateCurrentDayStatsJob) recalculateCurrentDayStats() { today := time.Now().Truncate(24 * time.Hour) yesterday := today.Add(-24 * time.Hour) + database.DeleteDailyStatsForDay(job.DB, today) database.GetDailyStats(job.DB, today) // Need to keep yesterday's stats cache updated