Files
goalfylearning-admin/internal/jobs/model_token_job.go

50 lines
970 B
Go

package jobs
import (
"time"
"goalfymax-admin/internal/config"
"goalfymax-admin/internal/services"
"goalfymax-admin/pkg/utils"
"go.uber.org/zap"
)
func StartModelTokenBalanceScheduler(cfg config.ModelTokenBalanceJobConfig, logger *utils.Logger) {
if !cfg.Enabled {
logger.Info("Model token balance scheduler disabled")
return
}
delay := time.Duration(cfg.DelayMinutes) * time.Minute
if delay < 0 {
delay = 0
}
runJob := func() {
logger.Info("Model token balance job started")
if err := services.RunModelTokenBalanceJob(); err != nil {
logger.Error("Model token balance job failed", zap.Error(err))
} else {
logger.Info("Model token balance job completed")
}
}
if cfg.RunOnStartup {
runJob()
}
go func() {
for {
now := time.Now().UTC()
next := now.Truncate(time.Hour).Add(time.Hour)
sleep := next.Sub(now) + delay
if sleep < time.Minute {
sleep = time.Minute
}
time.Sleep(sleep)
runJob()
}
}()
}