This repository has been archived on 2022-09-04. You can view files and clone it, but cannot push or open issues or pull requests.
dataupdater/cron/update_server_ennoblements_worker.go
Kichiyaki a4da69e085 - update github.com/tribalwarshelp/shared
- add a new worker - updateServerEnnoblementsWorker
- delete the updateServerDataWorker.loadEnnoblements method
2021-01-15 18:25:13 +01:00

45 lines
1.0 KiB
Go

package cron
import (
"github.com/go-pg/pg/v10"
"github.com/pkg/errors"
"github.com/tribalwarshelp/shared/models"
"github.com/tribalwarshelp/shared/tw/dataloader"
)
type updateServerEnnoblementsWorker struct {
db *pg.DB
dataloader dataloader.DataLoader
server *models.Server
}
func (w *updateServerEnnoblementsWorker) loadEnnoblements() ([]*models.Ennoblement, error) {
lastEnnoblement := &models.Ennoblement{}
if err := w.db.
Model(lastEnnoblement).
Limit(1).
Order("ennobled_at DESC").
Select(); err != nil && err != pg.ErrNoRows {
return nil, errors.Wrapf(err, "cannot load last ennoblement")
}
return w.dataloader.LoadEnnoblements(&dataloader.LoadEnnoblementsConfig{
EnnobledAtGT: lastEnnoblement.EnnobledAt,
})
}
func (w *updateServerEnnoblementsWorker) update() error {
ennoblements, err := w.loadEnnoblements()
if err != nil {
return err
}
if len(ennoblements) > 0 {
if _, err := w.db.Model(&ennoblements).Insert(); err != nil {
return errors.Wrap(err, "cannot insert ennoblements")
}
}
return nil
}