package region

import (
	tidbmgmtservicev1 "github.com/tidbcloud/tidb-management-service/api/spec/tidb_mgmt_service/v1"
	"github.com/tidbcloud/tidb-management-service/tidb-mgmt-service/domain/adapter/account"
	"github.com/tidbcloud/tidb-management-service/tidb-mgmt-service/domain/adapter/dedicatedglobal"
	"github.com/tidbcloud/tidb-management-service/tidb-mgmt-service/domain/adapter/nextgenglobal"
	"github.com/tidbcloud/tidb-management-service/tidb-mgmt-service/domain/adapter/serverlessglobal"
)

func NewServer(
	serverlessCli serverlessglobal.ServerlessGlobal,
	dedicatedCli dedicatedglobal.DedicatedGlobal,
	nextgenCli nextgenglobal.NextGenGlobal,
	accountCli account.Client,
) tidbmgmtservicev1.RegionServiceServer {
	return &serverImpl{
		serverlessCli: serverlessCli,
		dedicatedCli:  dedicatedCli,
		nextgenCli:    nextgenCli,
		accountCli:    accountCli,
	}
}

type serverImpl struct {
	serverlessCli serverlessglobal.ServerlessGlobal
	dedicatedCli  dedicatedglobal.DedicatedGlobal
	nextgenCli    nextgenglobal.NextGenGlobal
	accountCli    account.Client
}
