package byocvpcpeering

import (
	"context"

	globalngv1 "github.com/tidbcloud/tidb-management-service/api/spec/global/nextgen/v1"
	"github.com/tidbcloud/tidb-management-service/nextgen-global-service/domain/entity"
	clusterrepo "github.com/tidbcloud/tidb-management-service/nextgen-global-service/domain/repository/cluster"
	"github.com/tidbcloud/tidb-management-service/utilities/bizerr"
)

func (s *serviceImpl) GetVpcPeeringAllowlistSetting(
	ctx context.Context,
	req *globalngv1.GetVpcPeeringAllowlistSettingRequest,
) (*entity.VpcPeeringAllowlistSetting, bizerr.BizError) {
	ctx, span := tracer.Start(ctx, "ByocVpcPeeringService.GetVpcPeeringAllowlistSetting")
	defer span.End()

	if req.GetClusterId() == 0 {
		return nil, bizerr.New(bizerr.ErrCodeParams, "cluster_id is required")
	}

	clusters, err := s.clusterRepo.Query(ctx, &clusterrepo.Filter{
		ClusterIds: []uint64{req.GetClusterId()},
	})
	if err != nil {
		return nil, err
	}
	if len(clusters) == 0 {
		return nil, bizerr.New(bizerr.ErrCodeRecordNotFound, "cluster not found")
	}

	return s.allowlistRepo.GetByClusterID(ctx, req.GetClusterId())
}
