Safe Haskell | None |
---|---|
Language | Haskell2010 |
Synopsis
- class Key key
- class KeyValue key value
- retrieve :: (MonadIO m, KeyValue key value, Serialize key, Serialize value) => DB -> Maybe Snapshot -> key -> m (Maybe value)
- matchRecursive :: (MonadIO m, KeyValue key value, Serialize key, Serialize value) => key -> Iterator -> ConduitT () (key, value) m ()
- matching :: (MonadResource m, KeyValue key value, Serialize key, Serialize value) => DB -> Maybe Snapshot -> key -> ConduitT () (key, value) m ()
- matchingSkip :: (MonadResource m, KeyValue key value, Serialize key, Serialize value) => DB -> Maybe Snapshot -> key -> key -> ConduitT () (key, value) m ()
- insert :: (MonadIO m, KeyValue key value, Serialize key, Serialize value) => DB -> key -> value -> m ()
- remove :: (MonadIO m, Key key, Serialize key) => DB -> key -> m ()
- insertOp :: (KeyValue key value, Serialize key, Serialize value) => key -> value -> BatchOp
- deleteOp :: (Key key, Serialize key) => key -> BatchOp
- writeBatch :: MonadIO m => DB -> WriteBatch -> m ()
- firstMatching :: (MonadUnliftIO m, KeyValue key value, Serialize key, Serialize value) => DB -> Maybe Snapshot -> key -> m (Maybe (key, value))
- firstMatchingSkip :: (MonadUnliftIO m, KeyValue key value, Serialize key, Serialize value) => DB -> Maybe Snapshot -> key -> key -> m (Maybe (key, value))
- matchingAsList :: (MonadUnliftIO m, KeyValue key value, Serialize key, Serialize value) => DB -> Maybe Snapshot -> key -> m [(key, value)]
- matchingSkipAsList :: (MonadUnliftIO m, KeyValue key value, Serialize key, Serialize value) => DB -> Maybe Snapshot -> key -> key -> m [(key, value)]
Documentation
retrieve :: (MonadIO m, KeyValue key value, Serialize key, Serialize value) => DB -> Maybe Snapshot -> key -> m (Maybe value) Source #
Read a value from the database, or Nothing
if not found.
matchRecursive :: (MonadIO m, KeyValue key value, Serialize key, Serialize value) => key -> Iterator -> ConduitT () (key, value) m () Source #
matching :: (MonadResource m, KeyValue key value, Serialize key, Serialize value) => DB -> Maybe Snapshot -> key -> ConduitT () (key, value) m () Source #
Use the passed key to filter all the elements whose key prefix match it. Use a sum type for keys that allows to set a version of the key that has a shorter length when serialized..
#!/usr/bin/env stack {- stack --resolver lts-12.9 --install-ghc runghc --package base --package cereal --package conduit --package rocksdb-haskell-1.0.1 --package rocksdb-query-0.1.2 -- -hide-all-packages -} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE MultiParamTypeClasses #-} import Conduit import Data.Serialize import Database.RocksDB (createIfMissing, defaultOptions, open) import Database.RocksDB.Query (KeyValue, insert, matching) data MyKey = ShortKey String | FullKey String String deriving Show instance Serialize MyKey where put (ShortKey a) = put a put (FullKey a b) = put a >> put b get = FullKey <$> get <*> get instance KeyValue MyKey String main = do db <- open "test-db" defaultOptions {createIfMissing = True} insert db (FullKey "hello" "world") "despite all my rage" Just record <- runResourceT . runConduit $ matching db Nothing (ShortKey "hello") .| headC print (record :: (MyKey, String))
In this example you may serialize the ShortKey
and match all the elements
in the database that start with it as a prefix. Deserializing will always
yield a FullKey
.
matchingSkip :: (MonadResource m, KeyValue key value, Serialize key, Serialize value) => DB -> Maybe Snapshot -> key -> key -> ConduitT () (key, value) m () Source #
Like matching
, but skip to the second key passed as argument, or after if
there is no entry for the second key.
insert :: (MonadIO m, KeyValue key value, Serialize key, Serialize value) => DB -> key -> value -> m () Source #
Insert a record into the database.
remove :: (MonadIO m, Key key, Serialize key) => DB -> key -> m () Source #
Delete a record from the database.
insertOp :: (KeyValue key value, Serialize key, Serialize value) => key -> value -> BatchOp Source #
Get the BatchOp
to insert a record in the database.
deleteOp :: (Key key, Serialize key) => key -> BatchOp Source #
Get the BatchOp
to delete a record from the database.
writeBatch :: MonadIO m => DB -> WriteBatch -> m () Source #
Write a batch to the database.
firstMatching :: (MonadUnliftIO m, KeyValue key value, Serialize key, Serialize value) => DB -> Maybe Snapshot -> key -> m (Maybe (key, value)) Source #
Like matching
but return the first element only.
firstMatchingSkip :: (MonadUnliftIO m, KeyValue key value, Serialize key, Serialize value) => DB -> Maybe Snapshot -> key -> key -> m (Maybe (key, value)) Source #
Like matchingSkip
, but return the first element only.
matchingAsList :: (MonadUnliftIO m, KeyValue key value, Serialize key, Serialize value) => DB -> Maybe Snapshot -> key -> m [(key, value)] Source #
Like matching
but return a list.
matchingSkipAsList :: (MonadUnliftIO m, KeyValue key value, Serialize key, Serialize value) => DB -> Maybe Snapshot -> key -> key -> m [(key, value)] Source #
Like matchingSkip
, but return a list.