monarch 0.8.1.1 → 0.8.1.3
raw patch · 5 files changed
+44/−8 lines, 5 filesPVP: minor bump suggested
API additions: PVP suggests at least a minor version bump
API changes (from Hackage documentation)
+ Database.Monarch: multipleOut :: (MonadBaseControl IO m, MonadIO m) => [ByteString] -> MonarchT m ()
Files
- Database/Monarch.hs +1/−1
- Database/Monarch/Binary.hs +9/−1
- Database/Monarch/Raw.hs +4/−2
- monarch.cabal +1/−1
- test/specs.hs +29/−3
Database/Monarch.hs view
@@ -13,7 +13,7 @@ , Code(..) , put, putKeep, putCat, putShiftLeft, multiplePut , putNoResponse- , out+ , out, multipleOut , get, multipleGet , valueSize , iterInit, iterNext
Database/Monarch/Binary.hs view
@@ -5,7 +5,7 @@ ( put, putKeep, putCat, putShiftLeft, multiplePut , putNoResponse- , out+ , out, multipleOut , get, multipleGet , valueSize , iterInit, iterNext@@ -138,6 +138,14 @@ response Success = return () response InvalidOperation = return () response code = throwError code++-- | Remove records.+multipleOut :: ( MonadBaseControl IO m+ , MonadIO m ) =>+ [ByteString] -- ^ keys+ -> MonarchT m ()+multipleOut [] = return ()+multipleOut keys = void $ misc "outlist" [] keys -- | Retrieve a record. get :: ( MonadBaseControl IO m
Database/Monarch/Raw.hs view
@@ -156,9 +156,11 @@ recvLBS n = do conn <- connection <$> ask lbs <- liftIO (LBS.recv conn n) `catch` throwError' ReceiveError- if n /= LBS.length lbs+ if LBS.null lbs then throwError ReceiveError- else return lbs+ else if n == LBS.length lbs+ then return lbs+ else LBS.append lbs <$> recvLBS (n - LBS.length lbs) getConnection :: HostName -> Int
monarch.cabal view
@@ -1,5 +1,5 @@ name: monarch-version: 0.8.1.1+version: 0.8.1.3 synopsis: Monadic interface for TokyoTyrant. description: This package provides simple monadic interface for TokyoTyrant. license: BSD3
test/specs.hs view
@@ -2,7 +2,9 @@ import Database.Monarch import Control.Applicative+import Control.Monad.IO.Class import Data.List+import qualified Data.ByteString as BS import Data.ByteString.Char8 () import Test.HUnit import Test.Hspec.Monadic@@ -14,7 +16,7 @@ it "store a record" casePutRecord it "overwrite a record if same key exists" casePutOverwriteRecord describe "mput" $ do- it "store records" caseMputRecord+ it "store records" caseMputRecords describe "putkeep" $ do it "store a new record" casePutKeepNewRecord it "has no effect if same key exists" casePutKeepNoEffect@@ -30,8 +32,11 @@ describe "out" $ do it "remove a record" caseOutRecord it "no effect if same key not exists" caseOutNoEffect+ describe "mout" $ do+ it "remove records" caseMoutRecords describe "get" $ do it "retrieve a record" caseGetRecord+ it "retrieve large record" caseGetLargeRecord describe "mget" $ do it "retrieve records" caseMgetRecords describe "vsiz" $ do@@ -80,8 +85,8 @@ put "foo" "hoge" get "foo" -caseMputRecord :: Assertion-caseMputRecord =+caseMputRecords :: Assertion+caseMputRecords = action `returns` Right (Just "bob", Just "bar") where action = do@@ -177,6 +182,18 @@ action = do out "hoge" +caseMoutRecords :: Assertion+caseMoutRecords =+ action `returns` Right (Nothing, Nothing)+ where+ action = do+ put "foo" "bar"+ put "hoge" "fuga"+ multipleOut ["foo", "hoge"]+ bar <- get "foo"+ fuga <- get "hoge"+ return (bar, fuga)+ caseGetRecord :: Assertion caseGetRecord = action `returns` Right (Just "bar", Nothing)@@ -186,6 +203,15 @@ stored <- get "foo" unstored <- get "bar" return (stored, unstored)++caseGetLargeRecord :: Assertion+caseGetLargeRecord = do+ content <- BS.concat . replicate 1024 <$> liftIO (BS.readFile "test/specs.hs")+ action content `returns` Right (Just content)+ where+ action content = do+ put "foo" content+ get "foo" caseMgetRecords :: Assertion caseMgetRecords =