kv

package
v1.0.0-alpha.17 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 23, 2022 License: Apache-2.0 Imports: 12 Imported by: 0

Documentation

Index

Constants

View Source
const (
	InsertOp      = "insert"
	ReplaceOp     = "replace"
	UpdateOp      = "update"
	UpdateRangeOp = "updateRange"
	DeleteOp      = "delete"
	DeleteRangeOp = "deleteRange"
)

Variables

View Source
var (
	// ErrDuplicateKey is returned when an insert call is made for a key that already exist.
	ErrDuplicateKey = NewStoreError(ErrCodeDuplicateKey, "duplicate key value, violates key constraint")
	// ErrConflictingTransaction is returned when there are conflicting transactions.
	ErrConflictingTransaction = NewStoreError(ErrCodeConflictingTransaction, "transaction not committed due to conflict with another transaction")
)

Functions

func NewStoreError

func NewStoreError(code StoreErrCode, msg string, args ...interface{}) error

Types

type Iterator

type Iterator interface {
	Next(value *KeyValue) bool
	Err() error
}

type IteratorImpl

type IteratorImpl struct {
	// contains filtered or unexported fields
}

func (*IteratorImpl) Err

func (i *IteratorImpl) Err() error

func (*IteratorImpl) Next

func (i *IteratorImpl) Next(value *KeyValue) bool

type KV

type KV interface {
	Insert(ctx context.Context, table []byte, key Key, data *internal.TableData) error
	Replace(ctx context.Context, table []byte, key Key, data *internal.TableData) error
	Delete(ctx context.Context, table []byte, key Key) error
	DeleteRange(ctx context.Context, table []byte, lKey Key, rKey Key) error
	Read(ctx context.Context, table []byte, key Key) (Iterator, error)
	ReadRange(ctx context.Context, table []byte, lkey Key, rkey Key) (Iterator, error)
	Update(ctx context.Context, table []byte, key Key, apply func(*internal.TableData) (*internal.TableData, error)) (int32, error)
	UpdateRange(ctx context.Context, table []byte, lKey Key, rKey Key, apply func(*internal.TableData) (*internal.TableData, error)) (int32, error)
	SetVersionstampedValue(ctx context.Context, key []byte, value []byte) error
	Get(ctx context.Context, key []byte) ([]byte, error)
}

type Key

type Key []KeyPart

func BuildKey

func BuildKey(parts ...interface{}) Key

func (*Key) AddPart

func (k *Key) AddPart(part interface{})

type KeyPart

type KeyPart interface{}

type KeyValue

type KeyValue struct {
	Key    Key
	FDBKey []byte
	Data   *internal.TableData
}

type KeyValueStore

type KeyValueStore interface {
	KV
	BeginTx(ctx context.Context) (Tx, error)
	CreateTable(ctx context.Context, name []byte) error
	DropTable(ctx context.Context, name []byte) error
	GetInternalDatabase() interface{} // TODO: CDC remove workaround
}

func NewKeyValueStore

func NewKeyValueStore(cfg *config.FoundationDBConfig) (KeyValueStore, error)

type KeyValueStoreImpl

type KeyValueStoreImpl struct {
	// contains filtered or unexported fields
}

func (KeyValueStoreImpl) Batch

func (d KeyValueStoreImpl) Batch() (baseTx, error)

func (*KeyValueStoreImpl) BeginTx

func (k *KeyValueStoreImpl) BeginTx(ctx context.Context) (Tx, error)

func (KeyValueStoreImpl) CreateTable

func (d KeyValueStoreImpl) CreateTable(_ context.Context, name []byte) error

func (KeyValueStoreImpl) Delete

func (d KeyValueStoreImpl) Delete(ctx context.Context, table []byte, key Key) error

func (KeyValueStoreImpl) DeleteRange

func (d KeyValueStoreImpl) DeleteRange(ctx context.Context, table []byte, lKey Key, rKey Key) error

func (KeyValueStoreImpl) DropTable

func (d KeyValueStoreImpl) DropTable(ctx context.Context, name []byte) error

func (KeyValueStoreImpl) Get

func (d KeyValueStoreImpl) Get(ctx context.Context, key []byte) ([]byte, error)

func (*KeyValueStoreImpl) GetInternalDatabase

func (k *KeyValueStoreImpl) GetInternalDatabase() interface{}

func (*KeyValueStoreImpl) Insert

func (k *KeyValueStoreImpl) Insert(ctx context.Context, table []byte, key Key, data *internal.TableData) error

func (*KeyValueStoreImpl) Read

func (k *KeyValueStoreImpl) Read(ctx context.Context, table []byte, key Key) (Iterator, error)

func (*KeyValueStoreImpl) ReadRange

func (k *KeyValueStoreImpl) ReadRange(ctx context.Context, table []byte, lkey Key, rkey Key) (Iterator, error)

func (*KeyValueStoreImpl) Replace

func (k *KeyValueStoreImpl) Replace(ctx context.Context, table []byte, key Key, data *internal.TableData) error

func (KeyValueStoreImpl) SetVersionstampedValue

func (d KeyValueStoreImpl) SetVersionstampedValue(ctx context.Context, key []byte, value []byte) error

func (*KeyValueStoreImpl) Update

func (k *KeyValueStoreImpl) Update(ctx context.Context, table []byte, key Key, apply func(*internal.TableData) (*internal.TableData, error)) (int32, error)

func (*KeyValueStoreImpl) UpdateRange

func (k *KeyValueStoreImpl) UpdateRange(ctx context.Context, table []byte, lKey Key, rKey Key, apply func(*internal.TableData) (*internal.TableData, error)) (int32, error)

type Listener

type Listener interface {
	OnSet(op string, table []byte, key []byte, data []byte)
	OnClearRange(op string, table []byte, lKey []byte, rKey []byte)
	OnCommit(tx *fdb.Transaction) error
	OnCancel()
}

func GetListener

func GetListener(ctx context.Context) Listener

type ListenerCtxKey

type ListenerCtxKey struct{}

type NoListener

type NoListener struct{}

func (*NoListener) OnCancel

func (l *NoListener) OnCancel()

func (*NoListener) OnClearRange

func (l *NoListener) OnClearRange(string, []byte, []byte, []byte)

func (*NoListener) OnCommit

func (l *NoListener) OnCommit(*fdb.Transaction) error

func (*NoListener) OnSet

func (l *NoListener) OnSet(string, []byte, []byte, []byte)

type StoreErrCode

type StoreErrCode byte
const (
	ErrCodeInvalid                StoreErrCode = 0x00
	ErrCodeDuplicateKey           StoreErrCode = 0x01
	ErrCodeConflictingTransaction StoreErrCode = 0x02
)

type StoreError

type StoreError struct {
	// contains filtered or unexported fields
}

func (StoreError) Error

func (se StoreError) Error() string

type Tx

type Tx interface {
	KV
	Commit(context.Context) error
	Rollback(context.Context) error
	IsRetriable() bool
}

type TxImpl

type TxImpl struct {
	// contains filtered or unexported fields
}

func (TxImpl) Commit

func (t TxImpl) Commit(ctx context.Context) error

func (TxImpl) Delete

func (t TxImpl) Delete(ctx context.Context, table []byte, key Key) error

func (TxImpl) DeleteRange

func (t TxImpl) DeleteRange(ctx context.Context, table []byte, lKey Key, rKey Key) error

func (TxImpl) Get

func (t TxImpl) Get(_ context.Context, key []byte) ([]byte, error)

func (*TxImpl) Insert

func (tx *TxImpl) Insert(ctx context.Context, table []byte, key Key, data *internal.TableData) error

func (TxImpl) IsRetriable

func (t TxImpl) IsRetriable() bool

IsRetriable returns true if transaction can be retried after error

func (*TxImpl) Read

func (tx *TxImpl) Read(ctx context.Context, table []byte, key Key) (Iterator, error)

func (*TxImpl) ReadRange

func (tx *TxImpl) ReadRange(ctx context.Context, table []byte, lkey Key, rkey Key) (Iterator, error)

func (*TxImpl) Replace

func (tx *TxImpl) Replace(ctx context.Context, table []byte, key Key, data *internal.TableData) error

func (TxImpl) Rollback

func (t TxImpl) Rollback(ctx context.Context) error

func (TxImpl) SetVersionstampedValue

func (t TxImpl) SetVersionstampedValue(_ context.Context, key []byte, value []byte) error

func (*TxImpl) Update

func (tx *TxImpl) Update(ctx context.Context, table []byte, key Key, apply func(*internal.TableData) (*internal.TableData, error)) (int32, error)

func (*TxImpl) UpdateRange

func (tx *TxImpl) UpdateRange(ctx context.Context, table []byte, lKey Key, rKey Key, apply func(*internal.TableData) (*internal.TableData, error)) (int32, error)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL