amocrm/internal/workers/data_updater/data_updater.go

81 lines
1.9 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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
}