package updater import ( "context" "time" "git.intra.yksa.space/gsn/predictor/internal/pkg/errcodes" "go.uber.org/zap" ) type Job struct { service GribService config *Config logger *zap.Logger } func New(service GribService, config *Config, logger *zap.Logger) *Job { return &Job{ service: service, config: config, logger: logger, } } func (j *Job) GetInterval() time.Duration { return j.config.Interval } func (j *Job) GetTimeout() time.Duration { return j.config.Timeout } func (j *Job) GetCount() int { return 0 // Run indefinitely } func (j *Job) GetAsync() bool { return false // Singleton mode - only one instance should run } func (j *Job) Execute(ctx context.Context) error { j.logger.Info("executing GRIB update job") if err := j.service.Update(ctx); err != nil { j.logger.Error("GRIB update failed", zap.Error(err)) return errcodes.Wrap(err, "failed to update GRIB data") } j.logger.Info("GRIB update completed successfully") return nil }