41 lines
895 B
Go
41 lines
895 B
Go
package jobs
|
|
|
|
import (
|
|
"pool-stats/constants"
|
|
"pool-stats/database"
|
|
"time"
|
|
|
|
"github.com/ostafen/clover/v2"
|
|
)
|
|
|
|
type RecalculateCurrentDayStatsJob struct {
|
|
DB *clover.DB
|
|
}
|
|
|
|
func NewRecalculateCurrentDayStatsJob(db *clover.DB) *RecalculateCurrentDayStatsJob {
|
|
return &RecalculateCurrentDayStatsJob{DB: db}
|
|
}
|
|
|
|
func (job *RecalculateCurrentDayStatsJob) Run() error {
|
|
ticker := time.NewTicker(constants.RecalculateCurrentDayStatsJobInterval)
|
|
defer ticker.Stop()
|
|
|
|
for {
|
|
select {
|
|
case <-ticker.C:
|
|
job.recalculateCurrentDayStats()
|
|
}
|
|
}
|
|
}
|
|
|
|
func (job *RecalculateCurrentDayStatsJob) recalculateCurrentDayStats() {
|
|
today := time.Now().Truncate(24 * time.Hour)
|
|
yesterday := today.Add(-24 * time.Hour)
|
|
|
|
database.GetDailyStats(job.DB, today)
|
|
|
|
// Need to keep yesterday's stats cache updated
|
|
database.DeleteDailyStatsForDay(job.DB, yesterday)
|
|
database.GetDailyStats(job.DB, yesterday)
|
|
}
|