packages feed

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 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 =