package privatelink

import (
	"context"
	"strconv"

	globaldedicatedv1 "github.com/tidbcloud/tidb-management-service/api/spec/global/dedicated/v1"
	"github.com/tidbcloud/tidb-management-service/dedicated-global-service/domain/adapter/regionserver"
	"github.com/tidbcloud/tidb-management-service/utilities/bizerr"
)

func (svc *service) PausePrivateLinkService(
	ctx context.Context,
	req *globaldedicatedv1.PausePrivateLinkServiceRequest,
) bizerr.BizError {
	ctx, span := tracer.Start(ctx, "Domain.PausePrivateLinkServiceSvc")
	defer span.End()

	if req.TidbGroupId == 0 {
		return bizerr.New(bizerr.ErrCodeParams, "tidb group id is required")
	}

	cluster, err := svc.clusterRepo.Get(ctx, req.ClusterId, false)
	if err != nil {
		return err
	}

	region, err := svc.regionRepo.SelectRegionById(ctx, cluster.RegionId, cluster.OrganizationId)
	if err != nil {
		return err
	}

	regionalReq := &regionserver.PausePrivateLinkServiceRequest{
		ClusterId:   strconv.FormatUint(cluster.ClusterId, 10),
		TidbGroupId: strconv.FormatUint(req.TidbGroupId, 10),
	}

	_, err = svc.regionServerCli.PausePrivateLinkService(ctx, region, regionalReq)
	if err != nil {
		return err
	}

	return nil
}
