forked from TrueCloudLab/neoneo-go
9a1ef38689
Remove unnecesary methods
68 lines
1.5 KiB
Go
68 lines
1.5 KiB
Go
package database
|
|
|
|
import (
|
|
"github.com/syndtr/goleveldb/leveldb"
|
|
"github.com/syndtr/goleveldb/leveldb/errors"
|
|
)
|
|
|
|
// LDB represents a leveldb object
|
|
type LDB struct {
|
|
db *leveldb.DB
|
|
path string
|
|
}
|
|
|
|
// Database contains all methods needed for an object to be a database
|
|
type Database interface {
|
|
// Has checks whether the key is in the database
|
|
Has(key []byte) (bool, error)
|
|
// Put adds the key value pair into the pair
|
|
Put(key []byte, value []byte) error
|
|
// Get returns the value for the given key
|
|
Get(key []byte) ([]byte, error)
|
|
// Delete deletes the given value for the key from the database
|
|
Delete(key []byte) error
|
|
// Close closes the underlying db object
|
|
Close() error
|
|
}
|
|
|
|
// New will return a new leveldb instance
|
|
func New(path string) *LDB {
|
|
db, err := leveldb.OpenFile(path, nil)
|
|
if err != nil {
|
|
return nil
|
|
}
|
|
|
|
if _, corrupted := err.(*errors.ErrCorrupted); corrupted {
|
|
db, err = leveldb.RecoverFile(path, nil)
|
|
}
|
|
|
|
return &LDB{
|
|
db,
|
|
path,
|
|
}
|
|
}
|
|
|
|
// Has implements the database interface
|
|
func (l *LDB) Has(key []byte) (bool, error) {
|
|
return l.db.Has(key, nil)
|
|
}
|
|
|
|
// Put implements the database interface
|
|
func (l *LDB) Put(key []byte, value []byte) error {
|
|
return l.db.Put(key, value, nil)
|
|
}
|
|
|
|
// Get implements the database interface
|
|
func (l *LDB) Get(key []byte) ([]byte, error) {
|
|
return l.db.Get(key, nil)
|
|
}
|
|
|
|
// Delete implements the database interface
|
|
func (l *LDB) Delete(key []byte) error {
|
|
return l.db.Delete(key, nil)
|
|
}
|
|
|
|
// Close implements the database interface
|
|
func (l *LDB) Close() error {
|
|
return l.db.Close()
|
|
}
|