github.com/treeverse/lakefs@v1.24.1-0.20240520134607-95648127bfb0/pkg/graveler/committed/diff_values.go (about)

     1  package committed
     2  
     3  import (
     4  	"context"
     5  
     6  	"github.com/treeverse/lakefs/pkg/graveler"
     7  )
     8  
     9  // diffValuesIterator wraps a diffIterator in order to return only values
    10  type diffValuesIterator struct {
    11  	rangeDiffIter DiffIterator
    12  }
    13  
    14  func NewDiffValueIterator(ctx context.Context, left Iterator, right Iterator) graveler.DiffIterator {
    15  	return &diffValuesIterator{
    16  		rangeDiffIter: NewDiffIterator(ctx, left, right),
    17  	}
    18  }
    19  
    20  func (d diffValuesIterator) Next() bool {
    21  	for d.rangeDiffIter.Next() {
    22  		if d.rangeDiffIter.Err() != nil {
    23  			return false
    24  		}
    25  		val, _ := d.rangeDiffIter.Value()
    26  		if val != nil {
    27  			return true
    28  		}
    29  	}
    30  	return false
    31  }
    32  
    33  func (d diffValuesIterator) SeekGE(id graveler.Key) {
    34  	d.rangeDiffIter.SeekGE(id)
    35  }
    36  
    37  func (d diffValuesIterator) Value() *graveler.Diff {
    38  	val, _ := d.rangeDiffIter.Value()
    39  	return val
    40  }
    41  
    42  func (d diffValuesIterator) Err() error {
    43  	return d.rangeDiffIter.Err()
    44  }
    45  
    46  func (d diffValuesIterator) Close() {
    47  	d.rangeDiffIter.Close()
    48  }