package injection

import (
	"github.com/pingcap/enterprise-toolkit/tispector/config"
	"github.com/pingcap/enterprise-toolkit/tispector/dao"
	"github.com/pingcap/enterprise-toolkit/tispector/service/auth"
	"github.com/pingcap/enterprise-toolkit/tispector/service/auth/login_check"
	"github.com/pingcap/enterprise-toolkit/tispector/service/checker"
	"github.com/pingcap/enterprise-toolkit/tispector/service/db_info"
	"github.com/pingcap/enterprise-toolkit/tispector/service/task"
)

func Injection() {
	task.SetBackupDao(dao.BackupDAO)
	task.SetTaskDao(dao.Task)
	task.SetSubTaskDao(dao.SubTask)
	task.SetDbTools(db_info.DBTool)
	task.SetChecker(checker.Checker)
	checker.SetRuleStatusDao(dao.Rule)
	checker.SetFileDao(dao.File)
	db_info.SetClusterDao(dao.Cluster)
	auth.SetLoginService(login_check.LoginService)

	switch config.Conf.Role.From {
	case "conf":
		task.SetAuthTools(auth.ConfAuthService)
	case "net":
		task.SetAuthTools(auth.NetAuthService)
	default:
		MockInjection()
	}
}

func MockInjection() {
	task.SetAuthTools(auth.MockAuthService)
}
