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 }