package grpcli

import (
	"context"
	"strconv"

	dedicatedv1 "github.com/tidbcloud/infra-provider/api/tidbcloud/regional-server/v1"
	tigrpc "github.com/tidbcloud/tiinf/transport/tigrpc/client"
)

type DedicatedClusterServiceClient interface {
	GetClusterRole(ctx context.Context, clusterId uint64) (*dedicatedv1.ClusterRole, error)
}

type dedicatedClusterServiceClient struct {
	addr   string
	client dedicatedv1.ClusterServiceClient
}

func NewDedicatedClusterServiceClient(ctx context.Context, addr string) DedicatedClusterServiceClient {
	conn, err := tigrpc.NewClientConn(addr, tigrpc.WithDefault())
	if err != nil {
		return nil
	}
	return &dedicatedClusterServiceClient{
		addr:   addr,
		client: dedicatedv1.NewClusterServiceClient(conn),
	}
}

func (m *dedicatedClusterServiceClient) GetClusterRole(ctx context.Context, clusterId uint64) (*dedicatedv1.ClusterRole, error) {
	resp, err := m.client.GetClusterRole(ctx, &dedicatedv1.GetClusterRoleRequest{
		ClusterId: strconv.FormatUint(clusterId, 10),
	})
	if err != nil {
		return nil, err
	}
	return resp, nil
}
