mirror of
https://github.com/chaisql/chai.git
synced 2025-09-27 03:55:59 +08:00
68 lines
2.1 KiB
Go
68 lines
2.1 KiB
Go
package engine
|
|
|
|
import "github.com/cockroachdb/errors"
|
|
|
|
// Common errors returned by the engine.
|
|
var (
|
|
// ErrKeyNotFound is returned when the targeted key doesn't exist.
|
|
ErrKeyNotFound = errors.New("key not found")
|
|
|
|
// ErrKeyAlreadyExists is returned when the targeted key already exists.
|
|
ErrKeyAlreadyExists = errors.New("key already exists")
|
|
)
|
|
|
|
type Engine interface {
|
|
Close() error
|
|
Rollback() error
|
|
Recover() error
|
|
CleanupTransientNamespaces() error
|
|
NewSnapshotSession() Session
|
|
NewBatchSession() Session
|
|
NewTransientSession() Session
|
|
}
|
|
|
|
type Session interface {
|
|
Commit() error
|
|
Close() error
|
|
// Insert inserts a key-value pair. If it already exists, it returns ErrKeyAlreadyExists.
|
|
Insert(k, v []byte) error
|
|
// Put stores a key-value pair. If it already exists, it overrides it.
|
|
Put(k, v []byte) error
|
|
// Get returns a value associated with the given key. If not found, returns ErrKeyNotFound.
|
|
Get(k []byte) ([]byte, error)
|
|
// Exists returns whether a key exists and is visible by the current session.
|
|
Exists(k []byte) (bool, error)
|
|
// Delete a record by key. If not found, returns ErrKeyNotFound.
|
|
Delete(k []byte) error
|
|
DeleteRange(start []byte, end []byte) error
|
|
Iterator(opts *IterOptions) (Iterator, error)
|
|
}
|
|
|
|
type Iterator interface {
|
|
Close() error
|
|
First() bool
|
|
Start(reverse bool) bool
|
|
Last() bool
|
|
End(reverse bool) bool
|
|
Valid() bool
|
|
Next() bool
|
|
Prev() bool
|
|
Move(reverse bool) bool
|
|
Error() error
|
|
Key() []byte
|
|
Value() ([]byte, error)
|
|
}
|
|
|
|
type IterOptions struct {
|
|
// LowerBound specifies the smallest key (inclusive) that the iterator will
|
|
// return during iteration. If the iterator is seeked or iterated past this
|
|
// boundary the iterator will return Valid()==false. Setting LowerBound
|
|
// effectively truncates the key space visible to the iterator.
|
|
LowerBound []byte
|
|
// UpperBound specifies the largest key (exclusive) that the iterator will
|
|
// return during iteration. If the iterator is seeked or iterated past this
|
|
// boundary the iterator will return Valid()==false. Setting UpperBound
|
|
// effectively truncates the key space visible to the iterator.
|
|
UpperBound []byte
|
|
}
|