packages feed

rocksdb-query 0.4.0 → 0.4.1

raw patch · 3 files changed

+118/−4 lines, 3 filesdep ~rocksdb-haskell-jprupp

Dependency ranges changed: rocksdb-haskell-jprupp

Files

CHANGELOG.md view
@@ -4,6 +4,10 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). +## 0.4.1+### Added+- Support column families.+ ## 0.4.0 ### Changed - Depend on my new Haskell bindings.
rocksdb-query.cabal view
@@ -4,10 +4,10 @@ -- -- see: https://github.com/sol/hpack ----- hash: 9db21bfab84b1726ca28c3398842c81f3e8d774dd4d5cde2f5667f64a52b70c9+-- hash: b80763c5cc5ac5d920a8520a11db9cf0eb4634498bd96fe94c7bca37ca199021  name:           rocksdb-query-version:        0.4.0+version:        0.4.1 synopsis:       RocksDB database querying library for Haskell description:    Please see the README on GitHub at <https://github.com/jprupp/rocksdb-query#readme> category:       Database@@ -39,7 +39,7 @@     , cereal     , conduit     , resourcet-    , rocksdb-haskell-jprupp+    , rocksdb-haskell-jprupp >=2.1.1     , unliftio   default-language: Haskell2010 @@ -56,7 +56,7 @@     , cereal     , data-default     , hspec-    , rocksdb-haskell-jprupp+    , rocksdb-haskell-jprupp >=2.1.1     , rocksdb-query     , unliftio   default-language: Haskell2010
src/Database/RocksDB/Query.hs view
@@ -39,6 +39,25 @@                 Left e  -> throwString e                 Right x -> return (Just x) +-- | Read a value from the database, or 'Nothing' if not found.+retrieveCommon ::+       (MonadIO m, KeyValue key value, Serialize key, Serialize value)+    => DB+    -> Maybe ColumnFamily+    -> key+    -> m (Maybe value)+retrieveCommon db mcf key =+    f >>= \case+        Nothing -> return Nothing+        Just bytes ->+            case decode bytes of+                Left e  -> throwString e+                Right x -> return (Just x)+  where+    f = case mcf of+        Just cf -> R.getCF db cf (encode key)+        Nothing -> R.get db (encode key)+ matchRecursiveList ::      (MonadIO m, KeyValue key value, Serialize key, Serialize value)   => key@@ -142,10 +161,25 @@     -> m () insert db key value = R.put db (encode key) (encode value) +-- | Insert a record into the database.+insertCF ::+       (MonadIO m, KeyValue key value, Serialize key, Serialize value)+    => DB+    -> ColumnFamily+    -> key+    -> value+    -> m ()+insertCF db cf key value = R.putCF db cf (encode key) (encode value)+ -- | Delete a record from the database. remove :: (MonadIO m, Key key, Serialize key) => DB -> key -> m () remove db key = delete db (encode key) +-- | Delete a record from the database.+removeCF :: (MonadIO m, Key key, Serialize key)+         => DB -> ColumnFamily -> key -> m ()+removeCF db cf key = deleteCF db cf (encode key)+ -- | Get the 'BatchOp' to insert a record in the database. insertOp ::        (KeyValue key value, Serialize key, Serialize value)@@ -154,10 +188,23 @@     -> BatchOp insertOp key value = R.Put (encode key) (encode value) +-- | Get the 'BatchOp' to insert a record in the database.+insertOpCF ::+       (KeyValue key value, Serialize key, Serialize value)+    => ColumnFamily+    -> key+    -> value+    -> BatchOp+insertOpCF cf key value = R.PutCF cf (encode key) (encode value)+ -- | Get the 'BatchOp' to delete a record from the database. deleteOp :: (Key key, Serialize key) => key -> BatchOp deleteOp key = Del (encode key) +-- | Get the 'BatchOp' to delete a record from the database.+deleteOpCF :: (Key key, Serialize key) => ColumnFamily -> key -> BatchOp+deleteOpCF cf key = DelCF cf (encode key)+ -- | Write a batch to the database. writeBatch :: MonadIO m => DB -> [BatchOp] -> m () writeBatch = write@@ -175,6 +222,20 @@ firstMatching db base =     withIter db $ \it -> runConduit $ matching it base .| headC +-- | Like 'matching' but return the first element only.+firstMatchingCF ::+       ( MonadUnliftIO m+       , KeyValue key value+       , Serialize key+       , Serialize value+       )+    => DB+    -> ColumnFamily+    -> key+    -> m (Maybe (key, value))+firstMatchingCF db cf base =+    withIterCF db cf $ \it -> runConduit $ matching it base .| headC+ -- | Like 'matchingSkip', but return the first element only. firstMatchingSkip ::        ( MonadUnliftIO m@@ -190,6 +251,22 @@     withIter db $ \it -> runConduit $     matchingSkip it base start .| headC +-- | Like 'matchingSkip', but return the first element only.+firstMatchingSkipCF ::+       ( MonadUnliftIO m+       , KeyValue key value+       , Serialize key+       , Serialize value+       )+    => DB+    -> ColumnFamily+    -> key+    -> key+    -> m (Maybe (key, value))+firstMatchingSkipCF db cf base start =+    withIterCF db cf $ \it -> runConduit $+    matchingSkip it base start .| headC+ -- | Like 'matching' but return a list. matchingAsList ::        ( MonadUnliftIO m@@ -205,6 +282,22 @@     iterSeek it (encode base)     matchRecursiveList base it +-- | Like 'matching' but return a list.+matchingAsListCF ::+       ( MonadUnliftIO m+       , KeyValue key value+       , Serialize key+       , Serialize value+       )+    => DB+    -> ColumnFamily+    -> key+    -> m [(key, value)]+matchingAsListCF db cf base =+    withIterCF db cf $ \it -> do+    iterSeek it (encode base)+    matchRecursiveList base it+ -- | Like 'matchingSkip', but return a list. matchingSkipAsList ::        ( MonadUnliftIO m@@ -218,5 +311,22 @@     -> m [(key, value)] matchingSkipAsList db base start =     withIter db $ \it -> do+    iterSeek it (encode start)+    matchRecursiveList base it++-- | Like 'matchingSkip', but return a list.+matchingSkipAsListCF ::+       ( MonadUnliftIO m+       , KeyValue key value+       , Serialize key+       , Serialize value+       )+    => DB+    -> ColumnFamily+    -> key+    -> key+    -> m [(key, value)]+matchingSkipAsListCF db cf base start =+    withIterCF db cf $ \it -> do     iterSeek it (encode start)     matchRecursiveList base it