Cache current day stats for 5m

This commit is contained in:
Pijus Kamandulis 2025-07-04 18:42:35 +03:00
parent edb17e825d
commit 11cc168b3a
2 changed files with 8 additions and 2 deletions

View File

@ -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)
}

View File

@ -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