2016-05-02 21:36:49 -04:00
|
|
|
package trantor
|
2014-02-09 23:22:45 +01:00
|
|
|
|
|
|
|
import (
|
2014-08-30 13:17:50 -05:00
|
|
|
log "github.com/cihub/seelog"
|
|
|
|
|
2014-02-09 23:22:45 +01:00
|
|
|
"time"
|
2014-08-30 13:17:50 -05:00
|
|
|
|
2016-05-02 21:36:49 -04:00
|
|
|
"gitlab.com/trantor/trantor/lib/database"
|
2014-02-09 23:22:45 +01:00
|
|
|
)
|
|
|
|
|
2016-05-03 01:03:23 -04:00
|
|
|
const (
|
|
|
|
minutesUpdateTags = 11
|
|
|
|
minutesUpdateVisited = 41
|
|
|
|
minutesUpdateDownloaded = 47
|
|
|
|
minutesUpdateHourlyV = 31
|
|
|
|
minutesUpdateDailyV = 60*12 + 7
|
|
|
|
minutesUpdateMonthlyV = 60*24 + 11
|
|
|
|
minutesUpdateHourlyD = 29
|
|
|
|
minutesUpdateDailyD = 60*12 + 13
|
|
|
|
minutesUpdateMontlyD = 60*24 + 17
|
|
|
|
minutesUpdateLogger = 5
|
|
|
|
)
|
|
|
|
|
|
|
|
func InitTasks(db *database.DB, loggerConfig string) {
|
|
|
|
updateLogger := func() error {
|
|
|
|
return UpdateLogger(loggerConfig)
|
|
|
|
}
|
|
|
|
periodicTask(updateLogger, minutesUpdateLogger*time.Minute)
|
|
|
|
|
|
|
|
periodicTask(db.UpdateTags, minutesUpdateTags*time.Minute)
|
|
|
|
periodicTask(db.UpdateMostVisited, minutesUpdateVisited*time.Minute)
|
|
|
|
periodicTask(db.UpdateDownloadedBooks, minutesUpdateDownloaded*time.Minute)
|
|
|
|
periodicTask(db.UpdateHourVisits, minutesUpdateHourlyV*time.Minute)
|
|
|
|
periodicTask(db.UpdateDayVisits, minutesUpdateDailyV*time.Minute)
|
|
|
|
periodicTask(db.UpdateMonthVisits, minutesUpdateMonthlyV*time.Minute)
|
|
|
|
periodicTask(db.UpdateHourDownloads, minutesUpdateHourlyD*time.Minute)
|
|
|
|
periodicTask(db.UpdateDayDownloads, minutesUpdateDailyD*time.Minute)
|
|
|
|
periodicTask(db.UpdateMonthDownloads, minutesUpdateMontlyD*time.Minute)
|
2014-02-11 11:02:22 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
func periodicTask(task func() error, periodicity time.Duration) {
|
2014-02-09 23:22:45 +01:00
|
|
|
go tasker(task, periodicity)
|
|
|
|
}
|
|
|
|
|
2014-02-11 11:02:22 +01:00
|
|
|
func tasker(task func() error, periodicity time.Duration) {
|
2014-02-09 23:22:45 +01:00
|
|
|
for true {
|
|
|
|
time.Sleep(periodicity)
|
2014-02-11 11:20:38 +01:00
|
|
|
err := task()
|
|
|
|
if err != nil {
|
2014-02-11 13:13:43 +01:00
|
|
|
log.Error("Task error: ", err)
|
2014-02-11 11:20:38 +01:00
|
|
|
}
|
2014-02-09 23:22:45 +01:00
|
|
|
}
|
|
|
|
}
|