mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-17 01:13:45 +00:00
ethdb: add Putter interface and Has method
This commit is contained in:
parent
c4d21bc8e5
commit
2ea88e168c
3 changed files with 23 additions and 4 deletions
|
|
@ -109,6 +109,10 @@ func (db *LDBDatabase) Put(key []byte, value []byte) error {
|
|||
return db.db.Put(key, value, nil)
|
||||
}
|
||||
|
||||
func (db *LDBDatabase) Has(key []byte) (bool, error) {
|
||||
return db.db.Has(key, nil)
|
||||
}
|
||||
|
||||
// Get returns the given key if it's present.
|
||||
func (db *LDBDatabase) Get(key []byte) ([]byte, error) {
|
||||
// Measure the database get latency, if requested
|
||||
|
|
@ -271,8 +275,6 @@ func (db *LDBDatabase) meter(refresh time.Duration) {
|
|||
}
|
||||
}
|
||||
|
||||
// TODO: remove this stuff and expose leveldb directly
|
||||
|
||||
func (db *LDBDatabase) NewBatch() Batch {
|
||||
return &ldbBatch{db: db.db, b: new(leveldb.Batch)}
|
||||
}
|
||||
|
|
@ -309,6 +311,10 @@ func (dt *table) Put(key []byte, value []byte) error {
|
|||
return dt.db.Put(append([]byte(dt.prefix), key...), value)
|
||||
}
|
||||
|
||||
func (dt *table) Has(key []byte) (bool, error) {
|
||||
return dt.db.Has(append([]byte(dt.prefix), key...))
|
||||
}
|
||||
|
||||
func (dt *table) Get(key []byte) ([]byte, error) {
|
||||
return dt.db.Get(append([]byte(dt.prefix), key...))
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,15 +16,20 @@
|
|||
|
||||
package ethdb
|
||||
|
||||
type Database interface {
|
||||
type Putter interface {
|
||||
Put(key []byte, value []byte) error
|
||||
}
|
||||
|
||||
type Database interface {
|
||||
Putter
|
||||
Get(key []byte) ([]byte, error)
|
||||
Has(key []byte) (bool, error)
|
||||
Delete(key []byte) error
|
||||
Close()
|
||||
NewBatch() Batch
|
||||
}
|
||||
|
||||
type Batch interface {
|
||||
Put(key, value []byte) error
|
||||
Putter
|
||||
Write() error
|
||||
}
|
||||
|
|
|
|||
|
|
@ -45,6 +45,14 @@ func (db *MemDatabase) Put(key []byte, value []byte) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
func (db *MemDatabase) Has(key []byte) (bool, error) {
|
||||
db.lock.Lock()
|
||||
defer db.lock.Unlock()
|
||||
|
||||
_, ok := db.db[string(key)]
|
||||
return ok, nil
|
||||
}
|
||||
|
||||
func (db *MemDatabase) Get(key []byte) ([]byte, error) {
|
||||
db.lock.RLock()
|
||||
defer db.lock.RUnlock()
|
||||
|
|
|
|||
Loading…
Reference in a new issue