2021-04-25 15:02:58 +00:00
|
|
|
package tasks
|
|
|
|
|
|
|
|
import (
|
|
|
|
"github.com/go-pg/pg/v10"
|
|
|
|
"github.com/pkg/errors"
|
|
|
|
"github.com/sirupsen/logrus"
|
|
|
|
"github.com/vmihailenco/taskq/v3"
|
|
|
|
|
|
|
|
"github.com/tribalwarshelp/cron/cron/queue"
|
|
|
|
)
|
|
|
|
|
|
|
|
const (
|
2021-04-25 17:06:17 +00:00
|
|
|
TaskNameLoadVersionsAndUpdateServerData = "loadVersionsAndUpdateServerData"
|
|
|
|
TaskNameLoadServersAndUpdateData = "loadServersAndUpdateData"
|
2021-04-25 15:37:08 +00:00
|
|
|
TaskNameUpdateServerData = "updateServerData"
|
2021-04-25 16:46:31 +00:00
|
|
|
TaskNameVacuum = "vacuum"
|
|
|
|
TaskNameVacuumServerDB = "vacuumServerDB"
|
2021-04-25 17:06:17 +00:00
|
|
|
TaskUpdateEnnoblements = "updateEnnoblements"
|
2021-04-25 17:20:38 +00:00
|
|
|
TaskUpdateServerEnnoblements = "updateServerEnnoblements"
|
2021-04-25 17:42:03 +00:00
|
|
|
TaskUpdateHistory = "updateHistory"
|
|
|
|
TaskUpdateServerHistory = "updateServerHistory"
|
|
|
|
TaskUpdateStats = "updateStats"
|
|
|
|
TaskUpdateServerStats = "updateServerStats"
|
2021-04-25 15:37:08 +00:00
|
|
|
defaultRetryLimit = 3
|
2021-04-25 15:02:58 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
var log = logrus.WithField("package", "tasks")
|
|
|
|
|
|
|
|
type Config struct {
|
|
|
|
DB *pg.DB
|
|
|
|
Queue queue.Queue
|
|
|
|
}
|
|
|
|
|
|
|
|
func RegisterTasks(cfg *Config) error {
|
|
|
|
if err := validateConfig(cfg); err != nil {
|
|
|
|
return errors.Wrap(err, "RegisterTasks")
|
|
|
|
}
|
|
|
|
|
|
|
|
t := &task{
|
|
|
|
db: cfg.DB,
|
|
|
|
queue: cfg.Queue,
|
|
|
|
}
|
2021-04-25 18:14:21 +00:00
|
|
|
options := []*taskq.TaskOptions{
|
|
|
|
{
|
|
|
|
Name: TaskNameLoadVersionsAndUpdateServerData,
|
|
|
|
Handler: (&taskLoadVersionsAndUpdateServerData{t}).execute,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
Name: TaskNameLoadServersAndUpdateData,
|
|
|
|
Handler: (&taskLoadServersAndUpdateData{t}).execute,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
Name: TaskNameUpdateServerData,
|
|
|
|
Handler: (&taskUpdateServerData{t}).execute,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
Name: TaskNameVacuum,
|
|
|
|
Handler: (&taskVacuum{t}).execute,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
Name: TaskNameVacuumServerDB,
|
|
|
|
Handler: (&taskVacuumServerDB{t}).execute,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
Name: TaskUpdateEnnoblements,
|
|
|
|
Handler: (&taskUpdateEnnoblements{t}).execute,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
Name: TaskUpdateServerEnnoblements,
|
|
|
|
Handler: (&taskUpdateServerEnnoblements{t}).execute,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
Name: TaskUpdateHistory,
|
|
|
|
Handler: (&taskUpdateHistory{t}).execute,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
Name: TaskUpdateServerHistory,
|
|
|
|
RetryLimit: defaultRetryLimit,
|
|
|
|
Handler: (&taskUpdateServerHistory{t}).execute,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
Name: TaskUpdateStats,
|
|
|
|
Handler: (&taskUpdateStats{t}).execute,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
Name: TaskUpdateServerStats,
|
|
|
|
Handler: (&taskUpdateServerStats{t}).execute,
|
|
|
|
},
|
|
|
|
}
|
|
|
|
for _, taskOptions := range options {
|
|
|
|
opts := taskOptions
|
|
|
|
if opts.RetryLimit == 0 {
|
|
|
|
opts.RetryLimit = defaultRetryLimit
|
|
|
|
}
|
|
|
|
taskq.RegisterTask(opts)
|
|
|
|
}
|
2021-04-25 15:02:58 +00:00
|
|
|
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func Get(taskName string) *taskq.Task {
|
|
|
|
return taskq.Tasks.Get(taskName)
|
|
|
|
}
|
|
|
|
|
|
|
|
func validateConfig(cfg *Config) error {
|
|
|
|
if cfg == nil {
|
|
|
|
return errors.New("Config hasn't been provided")
|
|
|
|
}
|
|
|
|
if cfg.DB == nil {
|
|
|
|
return errors.New("cfg.DB is required")
|
|
|
|
}
|
|
|
|
if cfg.Queue == nil {
|
|
|
|
return errors.New("cfg.Queue is required")
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|