package client

import (
	"github.com/tidbcloud/ffs/config"
	"github.com/tidbcloud/ffs/pkg/v1/proto"
	"github.com/tidbcloud/ffs/util/grpcutil"
	"google.golang.org/grpc"
)

type ServiceClient struct {
	proto.RealmControlServiceClient
	proto.RealmServiceClient
}

type Client struct {
	*grpcutil.ServiceClient
}

func NewClient(endpoints ...string) *Client {
	return &Client{
		ServiceClient: &grpcutil.ServiceClient{
			Schema:    config.Realm,
			Endpoints: endpoints,
			NewClient: func(conn *grpc.ClientConn) interface{} {
				return &ServiceClient{
					RealmControlServiceClient: proto.NewRealmControlServiceClient(conn),
					RealmServiceClient:        proto.NewRealmServiceClient(conn),
				}
			}},
	}
}

func (c *Client) Client() *ServiceClient {
	return c.ServiceClient.Client().(*ServiceClient)
}
