81 lines
1.9 KiB
Go
81 lines
1.9 KiB
Go
package data_updater
|
||
|
||
import (
|
||
"amocrm/internal/workers_methods"
|
||
"context"
|
||
"go.uber.org/zap"
|
||
"time"
|
||
)
|
||
|
||
type Deps struct {
|
||
Logger *zap.Logger
|
||
Methods *workers_methods.Methods
|
||
}
|
||
|
||
type DataUpdater struct {
|
||
logger *zap.Logger
|
||
methods *workers_methods.Methods
|
||
}
|
||
|
||
func NewDataUpdaterWC(deps Deps) *DataUpdater {
|
||
return &DataUpdater{
|
||
logger: deps.Logger,
|
||
methods: deps.Methods,
|
||
}
|
||
}
|
||
|
||
func (wc *DataUpdater) Start(ctx context.Context) {
|
||
nextStart := calculateTime()
|
||
ticker := time.NewTicker(time.Second * time.Duration(nextStart))
|
||
//ticker := time.NewTicker(10 * time.Second)
|
||
defer ticker.Stop()
|
||
|
||
for {
|
||
select {
|
||
case <-ticker.C:
|
||
wc.processTasks(ctx)
|
||
nextStart = calculateTime()
|
||
ticker.Reset(time.Second * time.Duration(nextStart))
|
||
case <-ctx.Done():
|
||
return
|
||
}
|
||
}
|
||
}
|
||
|
||
func (wc *DataUpdater) processTasks(ctx context.Context) {
|
||
// сначала получаем список токенов
|
||
newTokens, err := wc.methods.UpdateTokens(ctx)
|
||
if err != nil {
|
||
wc.logger.Error("error updating tokens and getting new tokens", zap.Error(err))
|
||
return
|
||
}
|
||
|
||
// обновляем информацию о пользователях
|
||
err = wc.methods.CheckUsers(ctx, newTokens)
|
||
if err != nil {
|
||
wc.logger.Error("error update users information", zap.Error(err))
|
||
}
|
||
|
||
// обновляем информацию о pipelines и их steps
|
||
err = wc.methods.CheckPipelinesAndSteps(ctx, newTokens)
|
||
if err != nil {
|
||
wc.logger.Error("error updating users pipelines and users pipelines-steps", zap.Error(err))
|
||
}
|
||
|
||
// обновляем информацию о tags
|
||
err = wc.methods.CheckTags(ctx, newTokens)
|
||
if err != nil {
|
||
wc.logger.Error("error updating users tags", zap.Error(err))
|
||
}
|
||
|
||
// обновляем информацию о fields
|
||
err = wc.methods.CheckFields(ctx, newTokens)
|
||
if err != nil {
|
||
wc.logger.Error("error updating users fields", zap.Error(err))
|
||
}
|
||
}
|
||
|
||
func (wc *DataUpdater) Stop(ctx context.Context) error {
|
||
return nil
|
||
}
|