package worker

import (
	"github.com/tidbcloud/dataflow-service/internal/model/connprofile"
	"github.com/tidbcloud/dataflow-service/internal/model/dm"

	"github.com/tidbcloud/dataflow-service/internal/model/backup"
	pimport "github.com/tidbcloud/dataflow-service/internal/model/import"
	"github.com/tidbcloud/dataflow-service/internal/model/statistic"
)

type Manager struct {
	backupModel      *backup.Model
	importModel      *pimport.Model
	dmModel          *dm.Model
	statisticModel   *statistic.Model
	connProfileModel *connprofile.Model
}

func New(backupModel *backup.Model, importModel *pimport.Model,
	dmModel *dm.Model, statisticModel *statistic.Model, connProfileModel *connprofile.Model,
) *Manager {
	return &Manager{
		backupModel:      backupModel,
		importModel:      importModel,
		dmModel:          dmModel,
		statisticModel:   statisticModel,
		connProfileModel: connProfileModel,
	}
}

func (c *Manager) StartBackgroundWorkers() error {
	w, err := NewGlobalBgWorker(c)
	if err != nil {
		return err
	}

	w.Start()
	return nil
}
