package service import ( "backend-service/pkg/version" "bash_go_service/shared/pkg/logger" "context" "time" "github.com/spf13/viper" ) // VersionCheckTask represents a task that checks for version updates. type VersionCheckTask struct { interval time.Duration } // NewVersionCheckTask creates a new VersionCheckTask. func NewVersionCheckTask() *VersionCheckTask { interval := viper.GetDuration("update_checker.interval") if interval < 1*time.Hour { interval = 1 * time.Hour // 默认值为1小时 } logger.Debug("VersionCheckTask interval: %v", interval) return &VersionCheckTask{ interval: interval, } } // Execute runs the version check task periodically. func (t *VersionCheckTask) Execute(ctx context.Context) { ticker := time.NewTicker(t.interval) defer ticker.Stop() for { select { case <-ticker.C: t.CheckUpdate() case <-ctx.Done(): logger.Info("VersionCheckTask stopped") return } } } // 检查更新,将文件下载到本地,在下次启动程序时执行更新 func (t *VersionCheckTask) CheckUpdate() { needUpdate, err := version.CheckUpdate() if err != nil { logger.Error("Check Update error: %v", err) return } logger.Info("Check Update result is: %v", needUpdate) } // Name returns the name of the task. func (t *VersionCheckTask) Name() string { return "VersionCheckTask" }