package job

import (
	"github.com/go-logr/logr"
	"sigs.k8s.io/controller-runtime/pkg/client"

	cloudv1 "github.com/tidbcloud/infra-api/api/v1"

	"github.com/tidbcloud/eks-provider/api/v1alpha1"
	"github.com/tidbcloud/infra-provider/pkg/config"
	"github.com/tidbcloud/infra-provider/pkg/namer"
)

type Context struct {
	// Injected from the caller
	Logger logr.Logger
	Local  client.Client

	Config config.RootConfig
	Namer  *namer.TiflowNamer

	TiflowJob *v1alpha1.TiflowJob
	Network   *cloudv1.Network
}

func (c *Context) Default() *Context {
	c.Namer = namer.NewTiflowNamer().
		WithNetworkName(c.Network.Name).
		WithNetworkNamespace(c.Network.Namespace).
		WithTiflowClusterName(c.TiflowJob.Name).
		WithTiflowClusterMasterManagerType(v1alpha1.DefaultSharedTiflowMasterManager.String()).
		WithTiflowClusterMasterManagerName(
			namer.UniqueIdentifier(c.Network.ObjectMeta, namer.WithPrefix(v1alpha1.DefaultSharedTiflowMasterManager.String())))
	return c
}
