database/bitcask
kayos@tcp.direct b85255196b
Improve test coverage
2022-08-29 03:30:39 -07:00
..
LICENSE License: MIT 2022-01-08 22:12:43 -08:00
README.md Docs: update 2022-08-28 23:44:32 -07:00
bitcask.go Improve test coverage 2022-08-29 03:30:39 -07:00
bitcask_search.go Improve test coverage 2022-08-29 03:30:39 -07:00
bitcask_search_test.go Add: interface methods + Fix: testing 2022-08-28 23:36:37 -07:00
bitcask_test.go Improve test coverage 2022-08-29 03:30:39 -07:00
errors.go Improve error handling/wrapping 2022-08-29 01:07:16 -07:00
keeper_test.go Keeper: change AllStores signature + add tests 2022-08-29 00:39:14 -07:00

bitcask

import "git.tcp.direct/tcp.direct/database/bitcask"

Documentation

func SetDefaultBitcaskOptions

func SetDefaultBitcaskOptions(bitcaskopts ...bitcask.Option)

SetDefaultBitcaskOptions options will set the options used for all subsequent bitcask stores that are initialized.

func WithMaxDatafileSize

func WithMaxDatafileSize(size int) bitcask.Option

WithMaxDatafileSize is a shim for bitcask's WithMaxDataFileSize function.

func WithMaxKeySize

func WithMaxKeySize(size uint32) bitcask.Option

WithMaxKeySize is a shim for bitcask's WithMaxKeySize function.

func WithMaxValueSize

func WithMaxValueSize(size uint64) bitcask.Option

WithMaxValueSize is a shim for bitcask's WithMaxValueSize function.

type DB

type DB struct {
}

DB is a mapper of a Filer and Searcher implementation using Bitcask.

func OpenDB

func OpenDB(path string) *DB

OpenDB will either open an existing set of bitcask datastores at the given directory, or it will create a new one.

func (*DB) AllStores

func (db *DB) AllStores() []database.Filer

AllStores returns a list of all bitcask datastores.

func (*DB) Close

func (db *DB) Close(storeName string) error

Close is a simple shim for bitcask's Close function.

func (*DB) CloseAll

func (db *DB) CloseAll() error

CloseAll closes all bitcask datastores.

func (*DB) Init

func (db *DB) Init(storeName string, opts ...any) error

Init opens a bitcask store at the given path to be referenced by storeName.

func (*DB) Path

func (db *DB) Path() string

Path returns the base path where we store our bitcask "stores".

func (*DB) Sync

func (db *DB) Sync(storeName string) error

Sync is a simple shim for bitcask's Sync function.

func (*DB) SyncAll

func (db *DB) SyncAll() error

SyncAll syncs all bitcask datastores.

func (*DB) SyncAndCloseAll

func (db *DB) SyncAndCloseAll() error

SyncAndCloseAll implements the method from Keeper to sync and close all bitcask stores.

func (*DB) With

func (db *DB) With(storeName string) database.Store

With calls the given underlying bitcask instance.

func (*DB) WithNew

func (db *DB) WithNew(storeName string) database.Filer

WithNew calls the given underlying bitcask instance, if it doesn't exist, it creates it.

type Store

type Store struct {
	*bitcask.Bitcask
	database.Searcher
}

Store is an implmentation of a Filer and a Searcher using Bitcask.

func (Store) Backend

func (s Store) Backend() any

Backend returns the underlying bitcask instance.

func (Store) Keys

func (s Store) Keys() (keys [][]byte)

Keys will return all keys in the database as a slice of byte slices.

func (Store) PrefixScan

func (s Store) PrefixScan(prefix string) (<-chan *kv.KeyValue, chan error)

PrefixScan will scan a Store for all keys that have a matching prefix of the given string and return a map of keys and values. (map[Key]Value)

func (s Store) Search(query string) (<-chan *kv.KeyValue, chan error)

Search will search for a given string within all values inside of a Store. Note, type casting will be necessary. (e.g: []byte or string)

func (Store) ValueExists

func (s Store) ValueExists(value []byte) (key []byte, ok bool)

ValueExists will check for the existence of a Value anywhere within the keyspace; returning the first Key found, true if found || nil and false if not found.