cassy 0.5.2 → 0.6
raw patch · 6 files changed
+86/−80 lines, 6 filesdep +lifted-basedep +monad-controldep +transformers-basedep −MonadCatchIO-transformersdep ~retry
Dependencies added: lifted-base, monad-control, transformers-base
Dependencies removed: MonadCatchIO-transformers
Dependency ranges changed: retry
Files
- cassy.cabal +10/−6
- src/Database/Cassandra/Basic.hs +7/−14
- src/Database/Cassandra/JSON.hs +17/−25
- src/Database/Cassandra/Marshall.hs +23/−22
- src/Database/Cassandra/Pack.hs +24/−8
- src/Database/Cassandra/Types.hs +5/−5
cassy.cabal view
@@ -1,5 +1,5 @@ Name: cassy-Version: 0.5.2+Version: 0.6 Synopsis: A high level driver for the Cassandra datastore License: BSD3 License-file: LICENSE@@ -10,7 +10,7 @@ Build-type: Simple description: The objective is to completely isolate away the thrift layer, providing- a more idiomatic Haskell experience working with Cassandra. Be sure+ a more idiomatic and naruall Haskell experience working with Cassandra. Be sure to check out the README on Github for some more explanation and Release Notes, which is helpful in talking about what this library can do.@@ -91,8 +91,10 @@ , data-default , async , errors- , MonadCatchIO-transformers >= 0.3- , retry < 0.3+ , monad-control+ , transformers-base+ , lifted-base+ , retry >= 0.3 , conduit >= 0.5 @@ -121,8 +123,10 @@ , resource-pool , data-default , errors- , MonadCatchIO-transformers >= 0.3- , retry < 0.3+ , monad-control+ , transformers-base+ , lifted-base+ , retry >= 0.3 , test-framework >= 0.6 , test-framework-quickcheck2 >= 0.2.12.2
src/Database/Cassandra/Basic.hs view
@@ -1,6 +1,7 @@ {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE NamedFieldPuns #-} {-# LANGUAGE NoMonomorphismRestriction #-} {-# LANGUAGE OverloadedStrings #-}@@ -85,27 +86,19 @@ , CKey (..) , fromColKey' - -- * Working with column types- , CasType (..)- , TAscii (..)- , TBytes (..)- , TCounter (..)- , TInt (..)- , TInt32 (..)- , TUtf8 (..)- , TUUID (..)- , TLong (..)- , Exclusive (..)+ -- * Cassandra Column Key Types+ , module Database.Cassandra.Pack+ ) where ------------------------------------------------------------------------------- import Control.Applicative import Control.Concurrent.Async-import Control.Exception+import Control.Exception.Lifted as E import Control.Monad-import qualified Control.Monad.CatchIO as MCIO import Control.Monad.Reader+import Control.Monad.Trans.Control import Control.Retry as R import Data.ByteString.Lazy (ByteString) import Data.Map (Map)@@ -395,7 +388,7 @@ -- -- 'UnavailableException', 'TimedOutException' and -- 'SchemaDisagreementException' will be automatically retried.-retryCas :: MCIO.MonadCatchIO m+retryCas :: (MonadBaseControl IO m, MonadIO m) => R.RetrySettings -- ^ For default settings, just use 'def' -> m a
src/Database/Cassandra/JSON.hs view
@@ -6,20 +6,19 @@ {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE TypeSynonymInstances #-}--{-|- A higher level module for working with Cassandra.--- All row and column keys are standardized to be of strict types.- Row keys are Text, while Column keys are ByteString. This might change- in the future and we may revert to entirely ByteString keys.--- Serialization and de-serialization of Column values are taken care of- automatically using the ToJSON and FromJSON typeclasses.---}+-----------------------------------------------------------------------------+-- |+-- Module : Database.Cassandra.JSON+-- Copyright : Ozgun Ataman+-- License : BSD3+--+-- Maintainer : Ozgun Ataman+-- Stability : experimental+--+-- This module has been deprecated and will be removed in version 0.7.+-- Every bit of functionality here is also available in the+-- Database.Cassandra.Marshall module, which is what you should use instead.+---------------------------------------------------------------------------- module Database.Cassandra.JSON (@@ -71,17 +70,9 @@ , CKey (..) , fromColKey' - -- * Working with column types- , CasType (..)- , TAscii (..)- , TBytes (..)- , TCounter (..)- , TInt (..)- , TInt32 (..)- , TUtf8 (..)- , TUUID (..)- , TLong (..)- , Exclusive (..)+ -- * Cassandra Column Key Types+ , module Database.Cassandra.Pack+ ) where -------------------------------------------------------------------------------@@ -101,6 +92,7 @@ import Database.Cassandra.Basic hiding (KeySelector (..), delete, get, getCol, getMulti) import qualified Database.Cassandra.Basic as CB+import Database.Cassandra.Pack -------------------------------------------------------------------------------
src/Database/Cassandra/Marshall.hs view
@@ -107,29 +107,30 @@ ------------------------------------------------------------------------------- import Control.Error+import Control.Exception.Lifted as E import Control.Monad-import Control.Monad.CatchIO import Control.Monad.Trans-import Control.Retry as R-import qualified Data.Aeson as A-import qualified Data.Attoparsec as Atto (IResult (..), parse)-import qualified Data.Binary as BN-import qualified Data.Binary.Get as BN-import qualified Data.ByteString.Char8 as B-import Data.ByteString.Lazy.Char8 (ByteString)-import qualified Data.ByteString.Lazy.Char8 as LB+import Control.Monad.Trans.Control+import Control.Retry as R+import qualified Data.Aeson as A+import qualified Data.Attoparsec as Atto (IResult (..), parse)+import qualified Data.Binary as BN+import qualified Data.Binary.Get as BN+import qualified Data.ByteString.Char8 as B+import Data.ByteString.Lazy.Char8 (ByteString)+import qualified Data.ByteString.Lazy.Char8 as LB import Data.Conduit-import qualified Data.Conduit.List as C-import Data.Int (Int32)-import Data.Map (Map)-import qualified Data.Map as M-import qualified Data.SafeCopy as SC-import qualified Data.Serialize as SL-import Prelude hiding (catch)+import qualified Data.Conduit.List as C+import Data.Int (Int32)+import Data.Map (Map)+import qualified Data.Map as M+import qualified Data.SafeCopy as SC+import qualified Data.Serialize as SL+import Prelude hiding (catch) --------------------------------------------------------------------------------import Database.Cassandra.Basic hiding (KeySelector (..), delete,- get, getCol, getMulti)-import qualified Database.Cassandra.Basic as CB+import Database.Cassandra.Basic hiding (KeySelector (..), delete,+ get, getCol, getMulti)+import qualified Database.Cassandra.Basic as CB import Database.Cassandra.Pack import Database.Cassandra.Types -------------------------------------------------------------------------------@@ -421,7 +422,7 @@ -- given 'Selector'. The 'Selector' must be a 'Range' selector, or -- else this funtion will raise an exception. paginate- :: (MonadCassandra m, MonadCatchIO m, CasType k)+ :: (MonadCassandra m, MonadBaseControl IO m, CasType k) => Marshall a -- ^ Serialization strategy -> ColumnFamily@@ -448,7 +449,7 @@ ------------------------------------------------------------------------------- -- | Convenience layer: Convert a pagination scheme to a conduit 'Source'.-pageToSource :: (MonadCatchIO m, Monad m) => PageResult m a -> Source m a+pageToSource :: (MonadBaseControl IO m, Monad m) => PageResult m a -> Source m a pageToSource (PDone as) = C.sourceList as pageToSource (PMore as m) = C.sourceList as >> lift m >>= pageToSource @@ -456,7 +457,7 @@ ------------------------------------------------------------------------------- -- | Just like 'paginate', but we instead return a conduit 'Source'. paginateSource- :: (CasType k, MonadCatchIO m, MonadCassandra m)+ :: (CasType k, MonadBaseControl IO m, MonadCassandra m) => Marshall a -> ColumnFamily -> RowKey
src/Database/Cassandra/Pack.hs view
@@ -10,8 +10,8 @@ , TAscii (..) , TBytes (..) , TCounter (..)- , TInt (..) , TInt32 (..)+ , TInt64 (..) , TUtf8 (..) , TUUID (..) , TLong (..)@@ -42,6 +42,7 @@ import Data.Time import Data.Time import Data.Time.Clock.POSIX+import GHC.Int ------------------------------------------------------------------------------- @@ -51,9 +52,11 @@ newtype TBytes = TBytes { getTBytes :: ByteString } deriving (Eq,Show,Read,Ord) newtype TCounter = TCounter { getCounter :: ByteString } deriving (Eq,Show,Read,Ord) newtype TInt32 = TInt32 { getInt32 :: Int32 } deriving (Eq,Show,Read,Ord)-newtype TInt = TInt { getInt :: Integer } deriving (Eq,Show,Read,Ord,Enum,Real,Integral,Num)+newtype TInt64 = TInt64 { getInt64 :: Int64 }+ deriving (Eq,Show,Read,Ord,Enum,Real,Integral,Num) newtype TUUID = TUUID { getUUID :: ByteString } deriving (Eq,Show,Read,Ord)-newtype TLong = TLong { getLong :: Integer } deriving (Eq,Show,Read,Ord,Enum,Real,Integral,Num)+newtype TLong = TLong { getLong :: Integer }+ deriving (Eq,Show,Read,Ord,Enum,Real,Integral,Num) newtype TUtf8 = TUtf8 { getUtf8 :: Text } deriving (Eq,Show,Read,Ord) @@ -156,15 +159,28 @@ ------------------------------------------------------------------------------- -- | Pack as an 8 byte number - same as 'TLong'-instance CasType TInt where- encodeCas = runPut . putWord64be . fromIntegral . getInt- decodeCas = TInt . fromIntegral . runGet getWord64be+instance CasType TInt64 where+ encodeCas = runPut . putWord64be . fromIntegral . getInt64+ decodeCas = TInt64 . fromIntegral . runGet getWord64be -------------------------------------------------------------------------------+instance CasType Int32 where+ encodeCas = encodeCas . TInt32 . fromIntegral+ decodeCas = fromIntegral . getInt32 . decodeCas+++-------------------------------------------------------------------------------+instance CasType Int64 where+ encodeCas = encodeCas . TInt64 . fromIntegral+ decodeCas = fromIntegral . getInt64 . decodeCas+++-------------------------------------------------------------------------------+-- | Assumed to be a 64-bit Int and encoded as such. instance CasType Int where- encodeCas = encodeCas . TInt . fromIntegral- decodeCas = fromIntegral . getInt . decodeCas+ encodeCas = encodeCas . TInt64 . fromIntegral+ decodeCas = fromIntegral . getInt64 . decodeCas -------------------------------------------------------------------------------
src/Database/Cassandra/Types.hs view
@@ -12,8 +12,8 @@ ------------------------------------------------------------------------------- import Control.Exception+import Control.Exception.Lifted as E import Control.Monad-import qualified Control.Monad.CatchIO as MCIO import qualified Data.ByteString.Char8 as B import Data.ByteString.Lazy (ByteString) import qualified Data.ByteString.Lazy.Char8 as LB@@ -247,8 +247,8 @@ -- | Exception handler that returns @True@ for errors that may be -- resolved after a retry. So they are good candidates for 'retrying' -- queries.-casRetryH :: Monad m => MCIO.Handler m Bool-casRetryH = MCIO.Handler $ \ e -> return $+casRetryH :: Monad m => E.Handler m Bool+casRetryH = E.Handler $ \ e -> return $ case e of UnavailableException{} -> True TimedOutException{} -> True@@ -257,8 +257,8 @@ -- | 'IOException's should be retried-networkRetryH :: Monad m => MCIO.Handler m Bool-networkRetryH = MCIO.Handler $ \ (_ :: IOException) -> return True+networkRetryH :: Monad m => E.Handler m Bool+networkRetryH = E.Handler $ \ (_ :: IOException) -> return True ------------------------------------------------------------------------------