updated DB spec

This commit is contained in:
StephenButtolph 2020-05-04 23:28:36 -04:00
parent 282e89653c
commit f837398403
1 changed files with 15 additions and 19 deletions

View File

@ -17,46 +17,42 @@ package database
// iterator until exhaustion. An iterator is not safe for concurrent use, but it // iterator until exhaustion. An iterator is not safe for concurrent use, but it
// is safe to use multiple iterators concurrently. // is safe to use multiple iterators concurrently.
type Iterator interface { type Iterator interface {
// Next moves the iterator to the next key/value pair. It returns whether the // Next moves the iterator to the next key/value pair. It returns whether
// iterator is exhausted. // the iterator is exhausted.
Next() bool Next() bool
// Error returns any accumulated error. Exhausting all the key/value pairs // Error returns any accumulated error. Exhausting all the key/value pairs
// is not considered to be an error. // is not considered to be an error.
Error() error Error() error
// Key returns the key of the current key/value pair, or nil if done. The caller // Key returns the key of the current key/value pair, or nil if done.
// should not modify the contents of the returned slice, and its contents may
// change on the next call to Next.
Key() []byte Key() []byte
// Value returns the value of the current key/value pair, or nil if done. The // Value returns the value of the current key/value pair, or nil if done.
// caller should not modify the contents of the returned slice, and its contents
// may change on the next call to Next.
Value() []byte Value() []byte
// Release releases associated resources. Release should always succeed and can // Release releases associated resources. Release should always succeed and
// be called multiple times without causing error. // can be called multiple times without causing error.
Release() Release()
} }
// Iteratee wraps the NewIterator methods of a backing data store. // Iteratee wraps the NewIterator methods of a backing data store.
type Iteratee interface { type Iteratee interface {
// NewIterator creates a binary-alphabetical iterator over the entire keyspace // NewIterator creates a binary-alphabetical iterator over the entire
// contained within the key-value database. // keyspace contained within the key-value database.
NewIterator() Iterator NewIterator() Iterator
// NewIteratorWithStart creates a binary-alphabetical iterator over a subset of // NewIteratorWithStart creates a binary-alphabetical iterator over a subset
// database content starting at a particular initial key (or after, if it does // of database content starting at a particular initial key (or after, if it
// not exist). // does not exist).
NewIteratorWithStart(start []byte) Iterator NewIteratorWithStart(start []byte) Iterator
// NewIteratorWithPrefix creates a binary-alphabetical iterator over a subset // NewIteratorWithPrefix creates a binary-alphabetical iterator over a
// of database content with a particular key prefix. // subset of database content with a particular key prefix.
NewIteratorWithPrefix(prefix []byte) Iterator NewIteratorWithPrefix(prefix []byte) Iterator
// NewIteratorWithStartAndPrefix creates a binary-alphabetical iterator over a // NewIteratorWithStartAndPrefix creates a binary-alphabetical iterator over
// subset of database content with a particular key prefix starting at a // a subset of database content with a particular key prefix starting at a
// specified key. // specified key.
NewIteratorWithStartAndPrefix(start, prefix []byte) Iterator NewIteratorWithStartAndPrefix(start, prefix []byte) Iterator
} }