packages feed

rocksdb-query 0.4.3 → 0.5.0

raw patch · 4 files changed

+42/−53 lines, 4 filesdep +temporarydep −unliftioPVP ok

version bump matches the API change (PVP)

Dependencies added: temporary

Dependencies removed: unliftio

API changes (from Hackage documentation)

- Database.RocksDB.Query: firstMatching :: (MonadUnliftIO m, KeyValue key value, Serialize key, Serialize value) => DB -> key -> m (Maybe (key, value))
+ Database.RocksDB.Query: firstMatching :: (KeyValue key value, Serialize key, Serialize value) => DB -> key -> IO (Maybe (key, value))
- Database.RocksDB.Query: firstMatchingCF :: (MonadUnliftIO m, KeyValue key value, Serialize key, Serialize value) => DB -> ColumnFamily -> key -> m (Maybe (key, value))
+ Database.RocksDB.Query: firstMatchingCF :: (KeyValue key value, Serialize key, Serialize value) => DB -> ColumnFamily -> key -> IO (Maybe (key, value))
- Database.RocksDB.Query: firstMatchingSkip :: (MonadUnliftIO m, KeyValue key value, Serialize key, Serialize value) => DB -> key -> key -> m (Maybe (key, value))
+ Database.RocksDB.Query: firstMatchingSkip :: (KeyValue key value, Serialize key, Serialize value) => DB -> key -> key -> IO (Maybe (key, value))
- Database.RocksDB.Query: firstMatchingSkipCF :: (MonadUnliftIO m, KeyValue key value, Serialize key, Serialize value) => DB -> ColumnFamily -> key -> key -> m (Maybe (key, value))
+ Database.RocksDB.Query: firstMatchingSkipCF :: (KeyValue key value, Serialize key, Serialize value) => DB -> ColumnFamily -> key -> key -> IO (Maybe (key, value))
- Database.RocksDB.Query: matchRecursive :: forall (m :: Type -> Type) key value i. (MonadIO m, KeyValue key value, Serialize key, Serialize value) => key -> Iterator -> ConduitT i (key, value) m ()
+ Database.RocksDB.Query: matchRecursive :: (KeyValue key value, Serialize key, Serialize value) => key -> Iterator -> ConduitT i (key, value) IO ()
- Database.RocksDB.Query: matchRecursiveList :: (MonadIO m, KeyValue key value, Serialize key, Serialize value) => key -> Iterator -> m [(key, value)]
+ Database.RocksDB.Query: matchRecursiveList :: (KeyValue key value, Serialize key, Serialize value) => key -> Iterator -> IO [(key, value)]
- Database.RocksDB.Query: matching :: forall (m :: Type -> Type) key value i. (MonadIO m, KeyValue key value, Serialize key, Serialize value) => Iterator -> key -> ConduitT i (key, value) m ()
+ Database.RocksDB.Query: matching :: (KeyValue key value, Serialize key, Serialize value) => Iterator -> key -> ConduitT i (key, value) IO ()
- Database.RocksDB.Query: matchingAsList :: (MonadUnliftIO m, KeyValue key value, Serialize key, Serialize value) => DB -> key -> m [(key, value)]
+ Database.RocksDB.Query: matchingAsList :: (KeyValue key value, Serialize key, Serialize value) => DB -> key -> IO [(key, value)]
- Database.RocksDB.Query: matchingAsListCF :: (MonadUnliftIO m, KeyValue key value, Serialize key, Serialize value) => DB -> ColumnFamily -> key -> m [(key, value)]
+ Database.RocksDB.Query: matchingAsListCF :: (KeyValue key value, Serialize key, Serialize value) => DB -> ColumnFamily -> key -> IO [(key, value)]
- Database.RocksDB.Query: matchingSkip :: forall (m :: Type -> Type) key value i. (MonadIO m, KeyValue key value, Serialize key, Serialize value) => Iterator -> key -> key -> ConduitT i (key, value) m ()
+ Database.RocksDB.Query: matchingSkip :: (KeyValue key value, Serialize key, Serialize value) => Iterator -> key -> key -> ConduitT i (key, value) IO ()
- Database.RocksDB.Query: matchingSkipAsList :: (MonadUnliftIO m, KeyValue key value, Serialize key, Serialize value) => DB -> key -> key -> m [(key, value)]
+ Database.RocksDB.Query: matchingSkipAsList :: (KeyValue key value, Serialize key, Serialize value) => DB -> key -> key -> IO [(key, value)]
- Database.RocksDB.Query: matchingSkipAsListCF :: (MonadUnliftIO m, KeyValue key value, Serialize key, Serialize value) => DB -> ColumnFamily -> key -> key -> m [(key, value)]
+ Database.RocksDB.Query: matchingSkipAsListCF :: (KeyValue key value, Serialize key, Serialize value) => DB -> ColumnFamily -> key -> key -> IO [(key, value)]

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.5.0+### Changed+- Improvements to rocksdb-haskell-jprupp package.+ ## 0.4.2 ### Adedd - Forgot to add retrieval using column families.
rocksdb-query.cabal view
@@ -1,13 +1,11 @@ cabal-version: 1.12 --- This file has been generated from package.yaml by hpack version 0.38.0.+-- This file has been generated from package.yaml by hpack version 0.39.6. -- -- see: https://github.com/sol/hpack------ hash: 399259d1d70dd1b29a3cf2d188fc5ec1a3ba82a7e55489b3bacc3d1cb2be9aaf  name:           rocksdb-query-version:        0.4.3+version:        0.5.0 synopsis:       RocksDB database querying library for Haskell description:    Please see the README on GitHub at <https://github.com/jprupp/rocksdb-query#readme> category:       Database@@ -40,7 +38,6 @@     , conduit     , resourcet     , rocksdb-haskell-jprupp >=2.1.1-    , unliftio   default-language: Haskell2010  test-suite rocksdb-query-test@@ -58,5 +55,5 @@     , hspec     , rocksdb-haskell-jprupp >=2.1.1     , rocksdb-query-    , unliftio+    , temporary   default-language: Haskell2010
src/Database/RocksDB/Query.hs view
@@ -17,7 +17,6 @@ import qualified Data.ByteString  as B import           Data.Serialize   as S import           Database.RocksDB as R-import           UnliftIO  -- | Class for types that are database keys. class Key key@@ -53,7 +52,7 @@         Nothing -> return Nothing         Just bytes ->             case decode bytes of-                Left e  -> throwString e+                Left e  -> error e                 Right x -> return (Just x)   where     f = case mcf of@@ -61,10 +60,10 @@         Nothing -> R.get db (encode key)  matchRecursiveList ::-     (MonadIO m, KeyValue key value, Serialize key, Serialize value)+     (KeyValue key value, Serialize key, Serialize value)   => key   -> Iterator-  -> m [(key, value)]+  -> IO [(key, value)] matchRecursiveList base it = go   where     go = iterEntry it >>= \case@@ -72,8 +71,8 @@         Just (key_bytes, value_bytes) ->           if base_bytes `B.isPrefixOf` key_bytes               then do-                  key <- either throwString return (decode key_bytes)-                  value <- either throwString return (decode value_bytes)+                  key <- either error return (decode key_bytes)+                  value <- either error return (decode value_bytes)                   iterNext it                   ((key, value) :) <$> go               else return []@@ -81,25 +80,24 @@  -- | Internal function for recursively matching a key. matchRecursive ::-       ( MonadIO m-       , KeyValue key value+       ( KeyValue key value        , Serialize key        , Serialize value        )     => key     -> Iterator-    -> ConduitT i (key, value) m ()+    -> ConduitT i (key, value) IO () matchRecursive base it = go   where     go =-      iterEntry it >>= \case+      liftIO (iterEntry it) >>= \case         Nothing -> return ()         Just (key_bytes, value_bytes) ->             when (base_bytes `B.isPrefixOf` key_bytes) $ do-                key <- either throwString return (decode key_bytes)-                value <- either throwString return (decode value_bytes)+                key <- either error return (decode key_bytes)+                value <- either error return (decode value_bytes)                 yield (key, value)-                iterNext it+                liftIO (iterNext it)                 go     base_bytes = encode base @@ -126,32 +124,30 @@ -- the 'Serialize' instance for @MyKey@ only understands how to deserialize a -- @FullKey@, then that is what is returned. matching ::-       ( MonadIO m-       , KeyValue key value+       ( KeyValue key value        , Serialize key        , Serialize value        )     => Iterator     -> key-    -> ConduitT i (key, value) m ()+    -> ConduitT i (key, value) IO () matching it base = do-    iterSeek it (encode base)+    liftIO (iterSeek it (encode base))     matchRecursive base it  -- | Like 'matching', but skip to the second key passed as argument, or after if -- there is no entry for the second key. matchingSkip ::-       ( MonadIO m-       , KeyValue key value+       ( KeyValue key value        , Serialize key        , Serialize value        )     => Iterator     -> key     -> key-    -> ConduitT i (key, value) m ()+    -> ConduitT i (key, value) IO () matchingSkip it base start = do-    iterSeek it (encode start)+    liftIO (iterSeek it (encode start))     matchRecursive base it  -- | Insert a record into the database.@@ -213,50 +209,46 @@  -- | Like 'matching' but return the first element only. firstMatching ::-       ( MonadUnliftIO m-       , KeyValue key value+       ( KeyValue key value        , Serialize key        , Serialize value        )     => DB     -> key-    -> m (Maybe (key, value))+    -> IO (Maybe (key, value)) 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+       ( KeyValue key value        , Serialize key        , Serialize value        )     => DB     -> ColumnFamily     -> key-    -> m (Maybe (key, value))+    -> IO (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-       , KeyValue key value+       ( KeyValue key value        , Serialize key        , Serialize value        )     => DB     -> key     -> key-    -> m (Maybe (key, value))+    -> IO (Maybe (key, value)) firstMatchingSkip db base start =     withIter db $ \it -> runConduit $     matchingSkip it base start .| headC  -- | Like 'matchingSkip', but return the first element only. firstMatchingSkipCF ::-       ( MonadUnliftIO m-       , KeyValue key value+       ( KeyValue key value        , Serialize key        , Serialize value        )@@ -264,21 +256,20 @@     -> ColumnFamily     -> key     -> key-    -> m (Maybe (key, value))+    -> IO (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-       , KeyValue key value+       ( KeyValue key value        , Serialize key        , Serialize value        )     => DB     -> key-    -> m [(key, value)]+    -> IO [(key, value)] matchingAsList db base =     withIter db $ \it -> do     iterSeek it (encode base)@@ -286,15 +277,14 @@  -- | Like 'matching' but return a list. matchingAsListCF ::-       ( MonadUnliftIO m-       , KeyValue key value+       ( KeyValue key value        , Serialize key        , Serialize value        )     => DB     -> ColumnFamily     -> key-    -> m [(key, value)]+    -> IO [(key, value)] matchingAsListCF db cf base =     withIterCF db cf $ \it -> do     iterSeek it (encode base)@@ -302,15 +292,14 @@  -- | Like 'matchingSkip', but return a list. matchingSkipAsList ::-       ( MonadUnliftIO m-       , KeyValue key value+       ( KeyValue key value        , Serialize key        , Serialize value        )     => DB     -> key     -> key-    -> m [(key, value)]+    -> IO [(key, value)] matchingSkipAsList db base start =     withIter db $ \it -> do     iterSeek it (encode start)@@ -318,8 +307,7 @@  -- | Like 'matchingSkip', but return a list. matchingSkipAsListCF ::-       ( MonadUnliftIO m-       , KeyValue key value+       ( KeyValue key value        , Serialize key        , Serialize value        )@@ -327,7 +315,7 @@     -> ColumnFamily     -> key     -> key-    -> m [(key, value)]+    -> IO [(key, value)] matchingSkipAsListCF db cf base start =     withIterCF db cf $ \it -> do     iterSeek it (encode start)
test/Spec.hs view
@@ -8,7 +8,7 @@ import           Database.RocksDB       as R import           Database.RocksDB.Query import           Test.Hspec-import           UnliftIO+import           System.IO.Temp  newtype KeyOne = KeyOne Word32 deriving (Show, Eq) data KeyTwo@@ -74,7 +74,7 @@             insertTestRecords db             hspec $ f db -insertTestRecords :: MonadIO m => DB -> m ()+insertTestRecords :: DB -> IO () insertTestRecords db = do     insert db (KeyOne 1) "Hello World!"     insert db (KeyOne 2) "Hello World Again!"