package integration

import (
	"context"
	"encoding/base64"
	"os"
	"path/filepath"

	cspb "github.com/tidbcloud/cluster-service-ng/api/cluster-service-ng/v1beta"
	regionalpb "github.com/tidbcloud/cluster-service-ng/api/tidbcloud/dataplane-manager/v1"
	"github.com/tidbcloud/ticdc-service-ng/pkg/regionalservice/mocks"
)

type regionalClient struct {
	mocks.MockClient
}

func (c *regionalClient) GetSharedPoolByID(ctx context.Context, sharedPoolID string) (*cspb.SharedPool, error) {
	return &cspb.SharedPool{
		Id:            sharedPoolID,
		DataplaneName: sharedPoolID,
	}, nil
}

func (c *regionalClient) GetDataPlaneByID(ctx context.Context, ID string) (*regionalpb.DataPlane, error) {
	fname, err := filepath.Abs(kubeconfigPath)
	if err != nil {
		return nil, err
	}
	data, err := os.ReadFile(fname)
	if err != nil {
		return nil, err
	}
	return &regionalpb.DataPlane{
		Id: ID,
		Kubernetes: &regionalpb.DataPlane_Kubernetes{
			Version:    "1.31",
			Kubeconfig: base64.StdEncoding.EncodeToString(data), // reuse envtest apiserver as dataplane
		},
	}, nil
}
