Cache current day stats for 5m
This commit is contained in:
+7
-2
@@ -258,10 +258,9 @@ func GetDailyStats(db *clover.DB, date time.Time) (*models.DailyStats, error) {
|
|||||||
dateStr := date.Format(time.DateOnly)
|
dateStr := date.Format(time.DateOnly)
|
||||||
|
|
||||||
// Check if stats already exist
|
// Check if stats already exist
|
||||||
isToday := dateStr == time.Now().UTC().Format(time.DateOnly)
|
|
||||||
existingDoc, err := db.FindFirst(c.NewQuery(DailyStatsCollectionName).
|
existingDoc, err := db.FindFirst(c.NewQuery(DailyStatsCollectionName).
|
||||||
Where(c.Field("Date").Eq(dateStr)))
|
Where(c.Field("Date").Eq(dateStr)))
|
||||||
if !isToday && err == nil && existingDoc != nil {
|
if err == nil && existingDoc != nil {
|
||||||
var stats models.DailyStats
|
var stats models.DailyStats
|
||||||
if err := existingDoc.Unmarshal(&stats); err != nil {
|
if err := existingDoc.Unmarshal(&stats); err != nil {
|
||||||
return nil, fmt.Errorf("failed to unmarshal daily stats: %v", err)
|
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
|
// Insert or update the daily stats in the collection
|
||||||
doc := document.NewDocumentOf(stats)
|
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 {
|
if _, err := db.InsertOne(DailyStatsCollectionName, doc); err != nil {
|
||||||
return nil, fmt.Errorf("failed to insert daily stats: %v", err)
|
return nil, fmt.Errorf("failed to insert daily stats: %v", err)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ func (job *RecalculateCurrentDayStatsJob) recalculateCurrentDayStats() {
|
|||||||
today := time.Now().Truncate(24 * time.Hour)
|
today := time.Now().Truncate(24 * time.Hour)
|
||||||
yesterday := today.Add(-24 * time.Hour)
|
yesterday := today.Add(-24 * time.Hour)
|
||||||
|
|
||||||
|
database.DeleteDailyStatsForDay(job.DB, today)
|
||||||
database.GetDailyStats(job.DB, today)
|
database.GetDailyStats(job.DB, today)
|
||||||
|
|
||||||
// Need to keep yesterday's stats cache updated
|
// Need to keep yesterday's stats cache updated
|
||||||
|
|||||||
Reference in New Issue
Block a user