Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var ( ErrClosedEntries = errors.New("closed entries") ErrConnectFailed = errors.New("connect failed") ErrDriverConfiguration = errors.New("driver configuration") ErrMissingKey = errors.New("missing key") ErrMissingValue = errors.New("missing value") ErrNotFound = errors.New("not found") ErrOperationFailed = errors.New("operation failed") ErrPredicateFailed = errors.New("predicate failed") ErrSetupFailed = errors.New("setup failed") ErrUnknownDriver = errors.New("unknown driver") )
Functions ¶
func Register ¶
Register 'driver' implementation under 'name'. Panic in case of empty name, nil driver or name already registered.
func UnregisterAllDrivers ¶
func UnregisterAllDrivers()
UnregisterAllDrivers remove all loaded drivers, used for test code.
Types ¶
type Driver ¶
type Driver interface { // Open opens access to the database store. Implementations give access to the same storage based on the dsn. // Implementation can return the same Storage instance based on dsn or new one as long as it provides access to // the same storage. Open(ctx context.Context, dsn string) (Store, error) }
Driver is the interface to access a kv database as a Store. Each kv provider implements a Driver.
type EntriesIterator ¶
type EntriesIterator interface { // Next should be called first before access Entry. // it will process the next entry and return true if it was successful, and false when none or error. Next() bool // Entry current entry read after calling Next, set to nil in case of an error or no more entries. Entry() *Entry // Err set to last error by reading or parse the next entry. Err() error // Close should be called at the end of processing entries, required to release resources used to scan entries. // After calling 'Close' the instance should not be used as the behaviour will not be defined. Close() }
EntriesIterator used to enumerate over Scan results
func ScanPrefix ¶
ScanPrefix returns an iterator on store that scan the set of keys that start with prefix
type PrefixIterator ¶
type PrefixIterator struct { Iterator EntriesIterator Prefix []byte // contains filtered or unexported fields }
func (*PrefixIterator) Close ¶
func (b *PrefixIterator) Close()
func (*PrefixIterator) Entry ¶
func (b *PrefixIterator) Entry() *Entry
func (*PrefixIterator) Err ¶
func (b *PrefixIterator) Err() error
func (*PrefixIterator) Next ¶
func (b *PrefixIterator) Next() bool
type Store ¶
type Store interface { // Get returns a value for the given key, or ErrNotFound if key doesn't exist Get(ctx context.Context, key []byte) ([]byte, error) // Set stores the given value, overwriting an existing value if one exists Set(ctx context.Context, key, value []byte) error // SetIf returns an ErrPredicateFailed error if the key with valuePredicate passed // doesn't match the currently stored value. SetIf is a simple compare-and-swap operator: // valuePredicate is either the existing value, or nil for no previous key exists. // this is intentionally simplistic: we can model a better abstraction on top, keeping this interface simple for implementors SetIf(ctx context.Context, key, value, valuePredicate []byte) error // Delete will delete the key, no error in if key doesn't exist Delete(ctx context.Context, key []byte) error // Scan returns entries that can be read by key order, starting at or after the `start` position Scan(ctx context.Context, start []byte) (EntriesIterator, error) // Close access to the database store. After calling Close the instance is unusable. Close() }
Click to show internal directories.
Click to hide internal directories.