rocksdb-haskell-jprupp-2.1.3: Haskell bindings for RocksDB
Copyright(c) 2012-2013 The leveldb-haskell Authors
(c) 2014 The rocksdb-haskell Authors
(c) 2020 Jean-Pierre Rupp
LicenseBSD3
Maintainerjprupp@protonmail.ch
Stabilityexperimental
Portabilitynon-portable
Safe HaskellNone
LanguageHaskell2010

Database.RocksDB

Description

RocksDB Haskell binding.

The API closely follows the C-API of RocksDB.

Synopsis

Exported Types

data DB Source #

Constructors

DB 

Fields

data BatchOp Source #

Instances

Instances details
Eq BatchOp Source # 
Instance details

Defined in Database.RocksDB.Base

Methods

(==) :: BatchOp -> BatchOp -> Bool #

(/=) :: BatchOp -> BatchOp -> Bool #

Show BatchOp Source # 
Instance details

Defined in Database.RocksDB.Base

type ColumnFamily = Ptr LColumnFamily Source #

Options

data Config Source #

Instances

Instances details
Eq Config Source # 
Instance details

Defined in Database.RocksDB.Internal

Methods

(==) :: Config -> Config -> Bool #

(/=) :: Config -> Config -> Bool #

Show Config Source # 
Instance details

Defined in Database.RocksDB.Internal

Default Config Source # 
Instance details

Defined in Database.RocksDB.Internal

Methods

def :: Config #

Basic Database Manipulations

withDB :: MonadUnliftIO m => FilePath -> Config -> (DB -> m a) -> m a Source #

Open a database.

The returned handle should be released with close.

withDBCF :: MonadUnliftIO m => FilePath -> Config -> [(String, Config)] -> (DB -> m a) -> m a Source #

put :: MonadIO m => DB -> ByteString -> ByteString -> m () Source #

Write a key/value pair.

delete :: MonadIO m => DB -> ByteString -> m () Source #

write :: MonadIO m => DB -> [BatchOp] -> m () Source #

Perform a batch mutation.

get :: MonadIO m => DB -> ByteString -> m (Maybe ByteString) Source #

Read a value by key.

withSnapshot :: MonadUnliftIO m => DB -> (DB -> m a) -> m a Source #

Run an action with a snapshot of the database. The DB object is not valid after the action ends.

Administrative Functions

data Property Source #

Properties exposed by RocksDB

Instances

Instances details
Eq Property Source # 
Instance details

Defined in Database.RocksDB.Base

Show Property Source # 
Instance details

Defined in Database.RocksDB.Base

getProperty :: MonadIO m => DB -> Property -> m (Maybe ByteString) Source #

Get a DB property.

destroy :: MonadIO m => FilePath -> Options -> m () Source #

Destroy the given RocksDB database.

repair :: MonadIO m => FilePath -> Options -> m () Source #

Repair the given RocksDB database.

approximateSize :: MonadIO m => DB -> Range -> m Int64 Source #

Inspect the approximate sizes of the different levels.

Iteration

type Iterator = Ptr LIterator Source #

withIter :: MonadUnliftIO m => DB -> (Iterator -> m a) -> m a Source #

Create Iterator and use it.

Note that an Iterator creates a snapshot of the database implicitly, so updates written after the iterator was created are not visible. You may, however, specify an older Snapshot in the ReadOptions.

Iterator should not be used after computation ends.

withIterCF :: MonadUnliftIO m => DB -> ColumnFamily -> (Iterator -> m a) -> m a Source #

iterEntry :: MonadIO m => Iterator -> m (Maybe (ByteString, ByteString)) Source #

Return the current entry as a pair, if the iterator is currently positioned at an entry, ie. iterValid.

iterFirst :: MonadIO m => Iterator -> m () Source #

Position at the first key in the source. The iterator is valid after this call iff the source is not empty.

iterGetError :: MonadIO m => Iterator -> m (Maybe ByteString) Source #

Check for errors

Note that this captures somewhat severe errors such as a corrupted database.

iterKey :: MonadIO m => Iterator -> m (Maybe ByteString) Source #

Return the key for the current entry if the iterator is currently positioned at an entry, ie. iterValid.

iterLast :: MonadIO m => Iterator -> m () Source #

Position at the last key in the source. The iterator is valid after this call iff the source is not empty.

iterNext :: MonadIO m => Iterator -> m () Source #

Moves to the next entry in the source. After this call, iterValid is true iff the iterator was not positioned at the last entry in the source.

If the iterator is not valid, this function does nothing. Note that this is a shortcoming of the C API: an iterPrev might still be possible, but we can't determine if we're at the last or first entry.

iterPrev :: MonadIO m => Iterator -> m () Source #

Moves to the previous entry in the source. After this call, iterValid is true iff the iterator was not positioned at the first entry in the source.

If the iterator is not valid, this function does nothing. Note that this is a shortcoming of the C API: an iterNext might still be possible, but we can't determine if we're at the last or first entry.

iterSeek :: MonadIO m => Iterator -> ByteString -> m () Source #

Position at the first key in the source that is at or past target. The iterator is valid after this call iff the source contains an entry that comes at or past target.

iterValid :: MonadIO m => Iterator -> m Bool Source #

An iterator is either positioned at a key/value pair, or not valid. This function returns true iff the iterator is valid.

iterValue :: MonadIO m => Iterator -> m (Maybe ByteString) Source #

Return the value for the current entry if the iterator is currently positioned at an entry, ie. iterValid.