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

     1  package rawtopic
     2  
     3  import (
     4  	"github.com/ydb-platform/ydb-go-genproto/protos/Ydb_Topic"
     5  
     6  	"github.com/ydb-platform/ydb-go-sdk/v3/internal/grpcwrapper/rawtopic/rawtopiccommon"
     7  	"github.com/ydb-platform/ydb-go-sdk/v3/internal/grpcwrapper/rawydb"
     8  )
     9  
    10  type UpdateOffsetsInTransactionRequest struct {
    11  	OperationParams rawydb.OperationParams
    12  	Tx              rawtopiccommon.TransactionIdentity
    13  	Topics          []UpdateOffsetsInTransactionRequest_TopicOffsets
    14  	Consumer        string
    15  }
    16  
    17  func (r *UpdateOffsetsInTransactionRequest) ToProto() *Ydb_Topic.UpdateOffsetsInTransactionRequest {
    18  	req := &Ydb_Topic.UpdateOffsetsInTransactionRequest{
    19  		OperationParams: r.OperationParams.ToProto(),
    20  		Tx:              r.Tx.ToProto(),
    21  		Consumer:        r.Consumer,
    22  	}
    23  
    24  	req.Topics = make([]*Ydb_Topic.UpdateOffsetsInTransactionRequest_TopicOffsets, len(r.Topics))
    25  	for topicIndex := range r.Topics {
    26  		topic := &r.Topics[topicIndex]
    27  		offsets := &Ydb_Topic.UpdateOffsetsInTransactionRequest_TopicOffsets{
    28  			Path: topic.Path,
    29  		}
    30  
    31  		offsets.Partitions = make(
    32  			[]*Ydb_Topic.UpdateOffsetsInTransactionRequest_TopicOffsets_PartitionOffsets,
    33  			len(topic.Partitions),
    34  		)
    35  		for partitionIndex := range topic.Partitions {
    36  			partition := &topic.Partitions[partitionIndex]
    37  			protoPartition := &Ydb_Topic.UpdateOffsetsInTransactionRequest_TopicOffsets_PartitionOffsets{
    38  				PartitionId: partition.PartitionID,
    39  			}
    40  
    41  			protoPartition.PartitionOffsets = make([]*Ydb_Topic.OffsetsRange, len(partition.PartitionOffsets))
    42  
    43  			for offsetIndex, offset := range partition.PartitionOffsets {
    44  				protoPartition.PartitionOffsets[offsetIndex] = offset.ToProto()
    45  			}
    46  
    47  			offsets.Partitions[partitionIndex] = protoPartition
    48  		}
    49  
    50  		req.Topics[topicIndex] = offsets
    51  	}
    52  
    53  	return req
    54  }
    55  
    56  type UpdateOffsetsInTransactionRequest_TopicOffsets struct { //nolint:revive,stylecheck
    57  	Path       string // Topic path
    58  	Partitions []UpdateOffsetsInTransactionRequest_PartitionOffsets
    59  }
    60  
    61  type UpdateOffsetsInTransactionRequest_PartitionOffsets struct { //nolint:revive,stylecheck
    62  	PartitionID      int64
    63  	PartitionOffsets []rawtopiccommon.OffsetRange
    64  }