package cluster

import (
	"context"
	"fmt"

	globalngv1 "github.com/tidbcloud/tidb-management-service/api/spec/global/nextgen/v1"
)

func (svc *service) GetProviderRole(
	ctx context.Context,
	clusterId uint64,

) (*globalngv1.ProviderRole, error) {
	ctx, span := tracer.Start(ctx, "ClusterService.GetCluster")
	defer span.End()

	if clusterId == 0 {
		return nil, fmt.Errorf("cluster id is invalid")
	}

	var role *globalngv1.ProviderRole
	if err := svc.transaction.Transaction(ctx, func(ctx context.Context) error {
		var err error
		_, err = svc.clusterRepo.GetCluster(ctx, clusterId, false)
		if err != nil {
			return err
		}

		role, err = svc.nextGenCli.GetProviderRole(ctx, &globalngv1.GetProviderRoleRequest{
			ClusterId: clusterId,
		})
		if err != nil {
			return err
		}

		return nil
	}); err != nil {
		return nil, fmt.Errorf("failed to get provider role: %w", err)
	}
	return role, nil
}
