package measure_report

import (
	"context"
	"fmt"
	"time"

	"github.com/go-co-op/gocron"
	"github.com/tidbcloud/tiinf/monitor/tilog"
	"go.uber.org/zap"
)

const IntervalScheduledWorker = 600

func RunWorker() error {
	s := gocron.NewScheduler(time.UTC)
	task := measureTask

	// add woker
	_, err := s.Every(IntervalScheduledWorker).Second().Do(task)
	if err != nil {
		fmt.Println("create worker failed ", err)
		return err
	}
	s.StartAsync()
	return nil
}
func measureTask() {
	ctx := context.Background()
	now := time.Now()
	err := Report.SendMeasure()
	after := time.Now()

	if err != nil {
		tilog.Error(ctx, "measureTask error ", zap.Error(err), zap.Time("workerBegin", now), zap.Time("workerEnd", after))
	} else {
		tilog.Info(ctx, "measureTask  ", zap.Time("workerBegin", now), zap.Time("workerEnd", after))
	}
}
