github.com/ydb-platform/ydb-go-sdk/v3@v3.57.0/internal/grpcwrapper/rawtopic/client.go (about)

     1  package rawtopic
     2  
     3  import (
     4  	"context"
     5  	"fmt"
     6  
     7  	"github.com/ydb-platform/ydb-go-genproto/Ydb_Topic_V1"
     8  
     9  	"github.com/ydb-platform/ydb-go-sdk/v3/internal/grpcwrapper/rawtopic/rawtopicreader"
    10  	"github.com/ydb-platform/ydb-go-sdk/v3/internal/grpcwrapper/rawtopic/rawtopicwriter"
    11  	"github.com/ydb-platform/ydb-go-sdk/v3/internal/xerrors"
    12  )
    13  
    14  type Client struct {
    15  	service Ydb_Topic_V1.TopicServiceClient
    16  }
    17  
    18  func NewClient(service Ydb_Topic_V1.TopicServiceClient) Client {
    19  	return Client{service: service}
    20  }
    21  
    22  func (c *Client) AlterTopic(ctx context.Context, req *AlterTopicRequest) (res AlterTopicResult, err error) {
    23  	resp, err := c.service.AlterTopic(ctx, req.ToProto())
    24  	if err != nil {
    25  		return res, xerrors.WithStackTrace(fmt.Errorf("ydb: alter topic grpc failed: %w", err))
    26  	}
    27  	err = res.FromProto(resp)
    28  
    29  	return res, err
    30  }
    31  
    32  func (c *Client) CreateTopic(
    33  	ctx context.Context,
    34  	req *CreateTopicRequest,
    35  ) (res CreateTopicResult, err error) {
    36  	resp, err := c.service.CreateTopic(ctx, req.ToProto())
    37  	if err != nil {
    38  		return res, xerrors.WithStackTrace(fmt.Errorf("ydb: create topic grpc failed: %w", err))
    39  	}
    40  	err = res.FromProto(resp)
    41  
    42  	return res, err
    43  }
    44  
    45  func (c *Client) DescribeTopic(ctx context.Context, req DescribeTopicRequest) (res DescribeTopicResult, err error) {
    46  	resp, err := c.service.DescribeTopic(ctx, req.ToProto())
    47  	if err != nil {
    48  		return DescribeTopicResult{}, xerrors.WithStackTrace(xerrors.Wrap(
    49  			fmt.Errorf("ydb: describe topic grpc failed: %w", err),
    50  		))
    51  	}
    52  	err = res.FromProto(resp)
    53  
    54  	return res, err
    55  }
    56  
    57  func (c *Client) DropTopic(
    58  	ctx context.Context,
    59  	req DropTopicRequest,
    60  ) (res DropTopicResult, err error) {
    61  	resp, err := c.service.DropTopic(ctx, req.ToProto())
    62  	if err != nil {
    63  		return res, xerrors.WithStackTrace(fmt.Errorf("ydb: drop topic grpc failed: %w", err))
    64  	}
    65  	err = res.FromProto(resp)
    66  
    67  	return res, err
    68  }
    69  
    70  func (c *Client) StreamRead(ctxStreamLifeTime context.Context) (rawtopicreader.StreamReader, error) {
    71  	protoResp, err := c.service.StreamRead(ctxStreamLifeTime)
    72  	if err != nil {
    73  		return rawtopicreader.StreamReader{}, xerrors.WithStackTrace(
    74  			xerrors.Wrap(
    75  				fmt.Errorf("ydb: failed start grpc topic stream read: %w", err),
    76  			),
    77  		)
    78  	}
    79  
    80  	return rawtopicreader.StreamReader{Stream: protoResp}, nil
    81  }
    82  
    83  func (c *Client) StreamWrite(ctxStreamLifeTime context.Context) (*rawtopicwriter.StreamWriter, error) {
    84  	protoResp, err := c.service.StreamWrite(ctxStreamLifeTime)
    85  	if err != nil {
    86  		return nil, xerrors.WithStackTrace(
    87  			xerrors.Wrap(
    88  				fmt.Errorf("ydb: failed start grpc topic stream write: %w", err),
    89  			),
    90  		)
    91  	}
    92  
    93  	return &rawtopicwriter.StreamWriter{Stream: protoResp}, nil
    94  }