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 }