packages feed

traction 0.2.0 → 0.2.1

raw patch · 3 files changed

+15/−25 lines, 3 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

- Traction.Control: DbT :: ReaderT TransactionContext (EitherT DbError m) a -> DbT m a
- Traction.Control: instance Control.Monad.Catch.MonadCatch m => Control.Monad.Catch.MonadCatch (Traction.Control.DbT m)
- Traction.Control: instance Control.Monad.Catch.MonadMask m => Control.Monad.Catch.MonadMask (Traction.Control.DbT m)
- Traction.Control: instance Control.Monad.Catch.MonadThrow m => Control.Monad.Catch.MonadThrow (Traction.Control.DbT m)
- Traction.Control: instance Control.Monad.IO.Class.MonadIO m => Control.Monad.IO.Class.MonadIO (Traction.Control.DbT m)
- Traction.Control: instance Control.Monad.IO.Class.MonadIO m => Traction.Control.MonadDb (Traction.Control.DbT m)
- Traction.Control: instance Control.Monad.Morph.MFunctor Traction.Control.DbT
- Traction.Control: instance Control.Monad.Trans.Class.MonadTrans Traction.Control.DbT
- Traction.Control: instance GHC.Base.Functor m => GHC.Base.Functor (Traction.Control.DbT m)
- Traction.Control: instance GHC.Base.Monad m => GHC.Base.Applicative (Traction.Control.DbT m)
- Traction.Control: instance GHC.Base.Monad m => GHC.Base.Monad (Traction.Control.DbT m)
- Traction.Control: newtype DbT m a
- Traction.Control: type Db = DbT IO
+ Traction.Control: Db :: ReaderT TransactionContext (EitherT DbError IO) a -> Db a
+ Traction.Control: instance Control.Monad.Catch.MonadCatch Traction.Control.Db
+ Traction.Control: instance Control.Monad.Catch.MonadMask Traction.Control.Db
+ Traction.Control: instance Control.Monad.Catch.MonadThrow Traction.Control.Db
+ Traction.Control: instance Control.Monad.IO.Class.MonadIO Traction.Control.Db
+ Traction.Control: instance GHC.Base.Applicative Traction.Control.Db
+ Traction.Control: instance GHC.Base.Functor Traction.Control.Db
+ Traction.Control: instance GHC.Base.Monad Traction.Control.Db
+ Traction.Control: instance Traction.Control.MonadDb Traction.Control.Db
+ Traction.Control: newtype Db a
- Traction.Control: [_runDb] :: DbT m a -> ReaderT TransactionContext (EitherT DbError m) a
+ Traction.Control: [_runDb] :: Db a -> ReaderT TransactionContext (EitherT DbError IO) a
- Traction.Control: liftDb :: MonadDb m => DbT IO a -> m a
+ Traction.Control: liftDb :: MonadDb m => Db a -> m a

Files

src/Traction/Control.hs view
@@ -4,8 +4,7 @@ {-# LANGUAGE RankNTypes #-} {-# LANGUAGE TypeFamilies #-} module Traction.Control (-    Db-  , DbT (..)+    Db (..)   , DbError (..)   , renderDbError   , DbPool (..)@@ -29,7 +28,7 @@  import           Control.Monad.Catch (Exception, MonadMask (..), MonadThrow, MonadCatch, Handler (..), handle, catches, bracket_, throwM) import           Control.Monad.IO.Class (MonadIO (..))-import           Control.Monad.Morph (MFunctor (..), squash)+import           Control.Monad.Morph (squash) import           Control.Monad.Trans.Class (MonadTrans (..)) import           Control.Monad.Trans.Except (ExceptT(..)) import           Control.Monad.Trans.Reader (ReaderT (..), ask)@@ -57,20 +56,11 @@     InTransaction Postgresql.Connection   | NotInTransaction DbPool -type Db =-  DbT IO--newtype DbT m a =-  DbT {-      _runDb :: ReaderT TransactionContext (EitherT DbError m) a+newtype Db a =+  Db {+      _runDb :: ReaderT TransactionContext (EitherT DbError IO) a     }  deriving (Functor, Applicative, Monad, MonadIO, MonadMask, MonadThrow, MonadCatch) -instance MFunctor DbT where-  hoist = hoist--instance MonadTrans DbT where-  lift = DbT . lift . lift- data DbError =     DbSqlError Postgresql.Query Postgresql.SqlError   | DbQueryError Postgresql.Query Postgresql.QueryError@@ -100,10 +90,10 @@       mconcat ["Query could not decode results, expected to be able to decode [", Text.unpack field, "], to type, [", Text.unpack encoding, "], for query: ", show q]  class MonadIO m => MonadDb m where-  liftDb :: DbT IO a -> m a+  liftDb :: Db a -> m a -instance MonadIO m => MonadDb (DbT m) where-  liftDb = hoist liftIO+instance MonadDb Db where+  liftDb = id  instance MonadDb m => MonadDb (ExceptT e m) where   liftDb = lift . liftDb@@ -114,7 +104,7 @@  failWith :: DbError -> Db a failWith =-  DbT . lift . left+  Db . lift . left  runDb :: DbPool -> Db a -> EitherT DbError IO a runDb pool db =@@ -138,7 +128,7 @@  transaction :: Db a -> Db a transaction db =-  DbT $ ask >>= \cc -> lift $ case cc of+  Db $ ask >>= \cc -> lift $ case cc of     InTransaction c ->       runReaderT (_runDb db) (InTransaction c)     NotInTransaction pool ->@@ -151,7 +141,7 @@  transactional :: (Monad m, Monad n) => (m a -> Db (n a)) -> (Db (n a) -> m a) -> m a -> m a transactional sifter lifter db =-  lifter . DbT $ ask >>= \cc -> lift $ case cc of+  lifter . Db $ ask >>= \cc -> lift $ case cc of     InTransaction c ->       runReaderT (_runDb $ sifter db) (InTransaction c)     NotInTransaction pool ->@@ -230,7 +220,7 @@  withConnection :: Postgresql.Query -> (Postgresql.Connection -> IO a) -> Db a withConnection query f =-  DbT $ ask >>= \cc -> case cc of+  Db $ ask >>= \cc -> case cc of     InTransaction c ->       lift . safely query . f $ c     NotInTransaction pool ->
src/Traction/Sql.hs view
@@ -167,7 +167,7 @@  bracketSavepoint :: Savepoint -> Db a -> Db a bracketSavepoint savepoint db =-  DbT $ ask >>= \c -> lift $ do+  Db $ ask >>= \c -> lift $ do     r <- liftIO . runEitherT $ flip runReaderT c $ _runDb (createSavepoint savepoint >> db)     case r of       Left _ -> do@@ -200,7 +200,7 @@  withUniqueCheckSavepoint :: MonadDb m => Savepoint -> Db a -> m (Unique a) withUniqueCheckSavepoint savepoint db =-  liftDb . DbT $ ask >>= \c -> lift $ do+  liftDb . Db $ ask >>= \c -> lift $ do     r <- liftIO . runEitherT $ flip runReaderT c $ _runDb (bracketSavepoint savepoint db)     case r of       Left (DbSqlError q e) -> do
traction.cabal view
@@ -1,5 +1,5 @@ name: traction-version: 0.2.0+version: 0.2.1 license: BSD3 license-file: LICENSE author: Mark Hibberd <mark@hibberd.id.au>