package clusterconfig

import (
	"fmt"
	"time"

	grpcutils "github.com/tidbcloud/cluster-service-ng/pkg/grpc"
	configcenter "github.com/tidbcloud/config-center/proto/config_center"
	tigrpcclient "github.com/tidbcloud/tiinf/transport/tigrpc/client"
)

type configClientImpl struct {
	configCenterCli configcenter.ConfigCenterServiceClient
}

func NewClient(configCenterAddr string) (Client, error) {
	conn, err := tigrpcclient.NewClientConn(
		configCenterAddr,
		tigrpcclient.WithDefault(),
		tigrpcclient.WithUnaryInterceptors(
			grpcutils.ClientPayloadLogInterceptor,
			grpcutils.CallingTimeoutInterceptor(5*time.Second),
		),
	)
	if err != nil {
		return nil, fmt.Errorf("failed to create config center client connection: %w", err)
	}

	return &configClientImpl{
		configCenterCli: configcenter.NewConfigCenterServiceClient(conn),
	}, nil
}
