mirror of
https://github.com/luxfi/evm.git
synced 2026-09-24 00:27:44 +00:00
125 lines
2.9 KiB
Go
125 lines
2.9 KiB
Go
// (c) 2020-2020, Lux Industries, Inc. All rights reserved.
|
|
// See the file LICENSE for licensing terms.
|
|
|
|
package iface
|
|
|
|
import (
|
|
"errors"
|
|
"io"
|
|
|
|
"github.com/luxfi/geth/ethdb"
|
|
)
|
|
|
|
// Database errors
|
|
var (
|
|
ErrNotFound = errors.New("not found")
|
|
ErrClosed = errors.New("database closed")
|
|
)
|
|
|
|
// Database wraps all database operations for node compatibility
|
|
type Database interface {
|
|
KeyValueReader
|
|
KeyValueWriter
|
|
KeyValueDeleter
|
|
Batcher
|
|
Iteratee
|
|
Compacter
|
|
io.Closer
|
|
HealthChecker
|
|
}
|
|
|
|
// HealthChecker provides health check capability
|
|
type HealthChecker interface {
|
|
HealthCheck() (interface{}, error)
|
|
}
|
|
|
|
// Batch represents a batch operation
|
|
type Batch interface {
|
|
ethdb.Batch
|
|
}
|
|
|
|
// Iterator represents an iterator
|
|
type Iterator interface {
|
|
ethdb.Iterator
|
|
}
|
|
|
|
// NewPrefixDB creates a new prefix database
|
|
func NewPrefixDB(prefix []byte, db Database) Database {
|
|
// This is a placeholder - in real implementation, this would wrap the database
|
|
// For now, return the same database
|
|
return db
|
|
}
|
|
|
|
// NewVersionDB creates a new version database
|
|
func NewVersionDB(db Database) VersionDB {
|
|
return &versionDBWrapper{Database: db}
|
|
}
|
|
|
|
// KeyValueReader wraps the Has and Get method of a backing data store.
|
|
type KeyValueReader interface {
|
|
// Has retrieves if a key is present in the key-value data store.
|
|
Has(key []byte) (bool, error)
|
|
|
|
// Get retrieves the given key if it's present in the key-value data store.
|
|
Get(key []byte) ([]byte, error)
|
|
}
|
|
|
|
// KeyValueWriter wraps the Put method of a backing data store.
|
|
type KeyValueWriter interface {
|
|
// Put inserts the given value into the key-value data store.
|
|
Put(key []byte, value []byte) error
|
|
}
|
|
|
|
// KeyValueDeleter wraps the Delete method of a backing data store.
|
|
type KeyValueDeleter interface {
|
|
// Delete removes the key from the key-value data store.
|
|
Delete(key []byte) error
|
|
}
|
|
|
|
// Batcher wraps batch operations
|
|
type Batcher interface {
|
|
// NewBatch creates a new batch
|
|
NewBatch() ethdb.Batch
|
|
}
|
|
|
|
// Iteratee wraps iteration operations
|
|
type Iteratee interface {
|
|
// NewIterator creates a new iterator
|
|
NewIterator(prefix []byte, start []byte) ethdb.Iterator
|
|
}
|
|
|
|
// Compacter wraps compaction operations
|
|
type Compacter interface {
|
|
// Compact compacts the underlying DB
|
|
Compact(start []byte, limit []byte) error
|
|
}
|
|
|
|
// PrefixDB wraps a database with a key prefix
|
|
type PrefixDB interface {
|
|
Database
|
|
}
|
|
|
|
// VersionDB provides versioned database operations
|
|
type VersionDB interface {
|
|
Database
|
|
// Commit commits the current database state
|
|
Commit() error
|
|
// Abort aborts the current database operations
|
|
Abort()
|
|
}
|
|
|
|
// versionDBWrapper wraps a Database to provide VersionDB interface
|
|
type versionDBWrapper struct {
|
|
Database
|
|
}
|
|
|
|
// Commit implements VersionDB interface
|
|
func (v *versionDBWrapper) Commit() error {
|
|
// For now, this is a no-op since we're not implementing actual versioning
|
|
return nil
|
|
}
|
|
|
|
// Abort implements VersionDB interface
|
|
func (v *versionDBWrapper) Abort() {
|
|
// For now, this is a no-op since we're not implementing actual versioning
|
|
} |