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

     1  package rawtopic
     2  
     3  import (
     4  	"time"
     5  
     6  	"github.com/ydb-platform/ydb-go-genproto/protos/Ydb_Topic"
     7  	"google.golang.org/protobuf/types/known/durationpb"
     8  
     9  	"github.com/ydb-platform/ydb-go-sdk/v3/internal/grpcwrapper/rawtopic/rawtopiccommon"
    10  	"github.com/ydb-platform/ydb-go-sdk/v3/internal/grpcwrapper/rawydb"
    11  )
    12  
    13  type CreateTopicRequest struct {
    14  	OperationParams rawydb.OperationParams
    15  
    16  	Path                              string
    17  	PartitionSettings                 PartitioningSettings
    18  	RetentionPeriod                   time.Duration
    19  	RetentionStorageMB                int64
    20  	SupportedCodecs                   rawtopiccommon.SupportedCodecs
    21  	PartitionWriteSpeedBytesPerSecond int64
    22  	PartitionWriteBurstBytes          int64
    23  	Attributes                        map[string]string
    24  	Consumers                         []Consumer
    25  	MeteringMode                      MeteringMode
    26  }
    27  
    28  func (req *CreateTopicRequest) ToProto() *Ydb_Topic.CreateTopicRequest {
    29  	proto := &Ydb_Topic.CreateTopicRequest{
    30  		Path:                 req.Path,
    31  		PartitioningSettings: req.PartitionSettings.ToProto(),
    32  	}
    33  
    34  	if req.RetentionPeriod != 0 {
    35  		proto.RetentionPeriod = durationpb.New(req.RetentionPeriod)
    36  	}
    37  	proto.RetentionStorageMb = req.RetentionStorageMB
    38  	proto.SupportedCodecs = req.SupportedCodecs.ToProto()
    39  	proto.PartitionWriteSpeedBytesPerSecond = req.PartitionWriteSpeedBytesPerSecond
    40  	proto.PartitionWriteBurstBytes = req.PartitionWriteBurstBytes
    41  	proto.Attributes = req.Attributes
    42  
    43  	proto.Consumers = make([]*Ydb_Topic.Consumer, len(req.Consumers))
    44  	for i := range proto.GetConsumers() {
    45  		proto.Consumers[i] = req.Consumers[i].ToProto()
    46  	}
    47  
    48  	proto.MeteringMode = Ydb_Topic.MeteringMode(req.MeteringMode)
    49  
    50  	return proto
    51  }
    52  
    53  type CreateTopicResult struct {
    54  	Operation rawydb.Operation
    55  }
    56  
    57  func (r *CreateTopicResult) FromProto(proto *Ydb_Topic.CreateTopicResponse) error {
    58  	return r.Operation.FromProtoWithStatusCheck(proto.GetOperation())
    59  }