|  | @@ -9,15 +9,28 @@ type LevelDBIterator[T any] struct {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  func (i *LevelDBIterator[T]) Count() int {
 | 
	
		
			
				|  |  |  	n := 0
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	if i.First() {
 | 
	
		
			
				|  |  | +		n++
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  	for i.Next() {
 | 
	
		
			
				|  |  |  		n++
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  	return n
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  func (i *LevelDBIterator[T]) Filter(f FilterFunc[T]) Iterator[T] {
 | 
	
		
			
				|  |  | -	i.First()
 | 
	
		
			
				|  |  |  	m := map[string]T{}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	if i.First() {
 | 
	
		
			
				|  |  | +		key, value, err := i.Get()
 | 
	
		
			
				|  |  | +		if err == nil {
 | 
	
		
			
				|  |  | +			m[key] = value
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  	for i.Next() {
 | 
	
		
			
				|  |  |  		key, value, err := i.Get()
 | 
	
		
			
				|  |  |  		if err != nil {
 | 
	
	
		
			
				|  | @@ -25,6 +38,7 @@ func (i *LevelDBIterator[T]) Filter(f FilterFunc[T]) Iterator[T] {
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  		m[key] = value
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  	return newMemoryIterator(m, i)
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -39,12 +53,15 @@ func (i *LevelDBIterator[T]) Get() (string, T, error) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  func (i *LevelDBIterator[T]) GetAll() (map[string]T, error) {
 | 
	
		
			
				|  |  |  	values := map[string]T{}
 | 
	
		
			
				|  |  | -	i.First()
 | 
	
		
			
				|  |  | -	key, value, err := i.Get()
 | 
	
		
			
				|  |  | -	if err != nil {
 | 
	
		
			
				|  |  | -		return values, err
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	if i.First() {
 | 
	
		
			
				|  |  | +		key, value, err := i.Get()
 | 
	
		
			
				|  |  | +		if err != nil {
 | 
	
		
			
				|  |  | +			return values, err
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		values[key] = value
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  | -	values[key] = value
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  	for i.Next() {
 | 
	
		
			
				|  |  |  		key, value, err := i.Get()
 | 
	
		
			
				|  |  |  		if err != nil {
 | 
	
	
		
			
				|  | @@ -52,16 +69,21 @@ func (i *LevelDBIterator[T]) GetAll() (map[string]T, error) {
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  		values[key] = value
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  	return values, nil
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  func (i *LevelDBIterator[T]) GetAllKeys() []string {
 | 
	
		
			
				|  |  |  	keys := []string{}
 | 
	
		
			
				|  |  | -	i.First()
 | 
	
		
			
				|  |  | -	keys = append(keys, i.Key())
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	if i.First() {
 | 
	
		
			
				|  |  | +		keys = append(keys, i.Key())
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  	for i.Next() {
 | 
	
		
			
				|  |  |  		keys = append(keys, i.Key())
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  	return keys
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 |