//go:generate ${GOBIN}/mockgen -destination gateway_client_mock.go -package=agentgateway github.com/tidbcloud/aisupport/packages/sdk-go/contracts/api/agent-gateway/gateway/v1 GatewayServiceClient
package agentgateway

import (
	"fmt"

	gatewayv1 "github.com/tidbcloud/aisupport/packages/sdk-go/contracts/api/agent-gateway/gateway/v1"
	grpcutil "github.com/tidbcloud/aisupport/packages/sdk-go/infra/utils/grpc"

	"go.uber.org/mock/gomock"
	"google.golang.org/grpc"
)

type Client struct {
	Gateway gatewayv1.GatewayServiceClient
}

func NewClient(address string) (*Client, error) {
	conn, err := grpc.NewClient(address, grpcutil.PresetDailOption().Default()...)
	if err != nil {
		return nil, fmt.Errorf("dial agent gateway %s: %w", address, err)
	}

	return &Client{Gateway: gatewayv1.NewGatewayServiceClient(conn)}, nil
}

func NewMockClient(ctrl *gomock.Controller) *Client {
	return &Client{Gateway: NewMockGatewayServiceClient(ctrl)}
}
