package scheduled

import (
	taskM "github.com/pingcap/test-infra/common/model/tcms/taskruns"
	"github.com/pingcap/test-infra/services/tcms/service"
	"github.com/pingcap/test-infra/services/tcms/utils"
)

func NewSvcTaskController(
	svcTaskRunSvc service.SvcTaskRunService,
) *svcTaskController {
	return &svcTaskController{svcTaskRunSvc}
}

type svcTaskController struct {
	service.SvcTaskRunService
}

func (t svcTaskController) Run() {
	c := utils.FakeCtx()
	ctx := utils.EmbedIntoContext(c)
	completed := false
	listed, err := t.List(ctx, taskM.ListSvcTaskRunOpts{Completed: &completed})
	if err != nil {
		return
	}
	for _, item := range listed.Items {
		_, err := t.Sync(ctx, item.MetaData.ID)
		if err != nil {
			c.Log().Errorf(err, "sync fail, id=%d", item.MetaData.ID)
			continue
		}
	}
}
