Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var ( // ErrKeyNotExist is returned from DB.Get when retrieving a non-existing key. ErrKeyNotExist = cerrors.New("key does not exist") )
Functions ¶
func AcceptanceTest ¶
AcceptanceTest is the acceptance test that all implementations of DB should pass. It should manually be called from a test case in each implementation:
func TestDB(t *testing.T) { db = NewDB() database.AcceptanceTest(t, db) }
Types ¶
type DB ¶
type DB interface { // NewTransaction starts and returns a new transaction. NewTransaction(ctx context.Context, update bool) (Transaction, context.Context, error) // Close should flush any cached writes, release all resources and close the // store. After Close is called other methods should return an error. Close() error // Ping pings the database and returns an error // if a connection to it is not possible. Ping(context.Context) error Set(ctx context.Context, key string, value []byte) error Get(ctx context.Context, key string) ([]byte, error) GetKeys(ctx context.Context, prefix string) ([]string, error) }
DB defines the interface for a key-value store.
type Transaction ¶
type Transaction interface { // Commit commits the transaction. If the transaction can't be committed // (e.g. read values were changed since the transaction started) it returns // an error. Commit() error // Discard discards a created transaction. This method is very important and // must be called. Calling this multiple times or after a Commit call // doesn't cause any issues, so this can safely be called via a defer right // when transaction is created. Discard() }
Transaction defines the interface for an isolated ACID DB transaction.
Click to show internal directories.
Click to hide internal directories.