Exposed the LevelDB iterator in the DB struct.

This commit is contained in:
Paul W. Homer 2017-03-17 13:27:20 -04:00
parent eac3f2bc14
commit bb8104b624
3 changed files with 27 additions and 0 deletions

8
db.go
View File

@ -12,6 +12,8 @@ type DB interface {
NewBatch() Batch
// For debugging
Iterator() Iterator
Next(Iterator) (key []byte, value []byte)
Print()
}
@ -21,6 +23,12 @@ type Batch interface {
Write()
}
type Iterator interface {
Next() bool
Key() []byte
Value() []byte
}
//-----------------------------------------------------------------------------
const (

View File

@ -90,6 +90,15 @@ func (db *GoLevelDB) Print() {
}
}
func (db *GoLevelDB) Iterator() Iterator {
return db.db.NewIterator(nil, nil)
}
func (db *GoLevelDB) Next(iter Iterator) ([]byte, []byte) {
iter.Next()
return iter.Key(), iter.Value()
}
func (db *GoLevelDB) NewBatch() Batch {
batch := new(leveldb.Batch)
return &goLevelDBBatch{db, batch}

View File

@ -65,6 +65,16 @@ func (db *MemDB) Print() {
}
}
// TODO: needs to be wired to range db.db
func (db *MemDB) Iterator() Iterator {
return nil
}
// TODO: needs to be wired to range db.db
func (db *MemDB) Next(iter Iterator) (key []byte, value []byte) {
return nil, nil
}
func (db *MemDB) NewBatch() Batch {
return &memDBBatch{db, nil}
}