opaleye-trans 0.4.0 → 0.4.1
raw patch · 2 files changed
+9/−31 lines, 2 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
- Opaleye.Trans.Exception: DomainError :: e -> OpaleyeError e
- Opaleye.Trans.Exception: SqlError :: SqlError -> OpaleyeError e
- Opaleye.Trans.Exception: data OpaleyeError e
- Opaleye.Trans.Exception: domainError :: MonadIO m => (e -> m a) -> OpaleyeError e -> m a
- Opaleye.Trans.Exception: instance GHC.Classes.Eq e => GHC.Classes.Eq (Opaleye.Trans.Exception.OpaleyeError e)
- Opaleye.Trans.Exception: instance GHC.Show.Show e => GHC.Show.Show (Opaleye.Trans.Exception.OpaleyeError e)
- Opaleye.Trans.Exception: opaleyeError :: (SqlError -> a) -> (e -> a) -> OpaleyeError e -> a
+ Opaleye.Trans.Exception: withoutError :: Monad m => OpaleyeT e m a -> OpaleyeT m (Either e a)
- Opaleye.Trans.Exception: runOpaleyeT :: Connection -> OpaleyeT e IO a -> IO (Either (OpaleyeError e) a)
+ Opaleye.Trans.Exception: runOpaleyeT :: Connection -> OpaleyeT e m a -> m (Either e a)
- Opaleye.Trans.Exception: withError :: Monad m => OpaleyeT m (Either e b) -> OpaleyeT e m b
+ Opaleye.Trans.Exception: withError :: Monad m => OpaleyeT m (Either e a) -> OpaleyeT e m a
Files
- opaleye-trans.cabal +1/−1
- src/Opaleye/Trans/Exception.hs +8/−30
opaleye-trans.cabal view
@@ -1,5 +1,5 @@ name: opaleye-trans-version: 0.4.0+version: 0.4.1 synopsis: A monad transformer for Opaleye description: A monad transformer for Opaleye homepage: https://github.com/WraithM/opaleye-trans
src/Opaleye/Trans/Exception.hs view
@@ -2,11 +2,8 @@ {-# LANGUAGE GeneralizedNewtypeDeriving #-} {-# LANGUAGE MultiParamTypeClasses #-} --- | This module wraps 'Opaleye.Trans' and includes some basic exception handling. We handle 'SqlError' and domain--- errors. By domain errors, we mean that the user of this library supplies an exception type for queries that could possibly fail. module Opaleye.Trans.Exception ( OpaleyeT (..)- , OpaleyeError (..) , runOpaleyeT , -- * Transactions@@ -36,11 +33,10 @@ , -- * Exceptions withExceptOpaleye , withExceptTrans- , opaleyeError- , domainError , -- * Utilities withError+ , withoutError , liftError , withTrans , maybeError@@ -87,31 +83,9 @@ withOpaleye = OpaleyeT . lift --- | 'OpaleyeError's are either 'PSQL.SqlError's or 'DomainError's-data OpaleyeError e = SqlError PSQL.SqlError | DomainError e deriving (Show, Eq)----- | Dispatcher helper the two kinds of exceptions that 'OpaleyeT' handles.-opaleyeError :: (PSQL.SqlError -> a) -> (e -> a) -> OpaleyeError e -> a-opaleyeError f _ (SqlError e) = f e-opaleyeError _ f (DomainError e) = f e----- | Dispatcher helper for domain errors. 'PSQL.SqlError's are rethrown.-domainError :: MonadIO m => (e -> m a) -> OpaleyeError e -> m a-domainError _ (SqlError e) = liftIO $ throw e-domainError f (DomainError e) = f e-- -- | Given a 'Connection', run an 'OpaleyeT'-runOpaleyeT :: PSQL.Connection -> OpaleyeT e IO a -> IO (Either (OpaleyeError e) a)-runOpaleyeT c f =- (fmap mkOpaleyeError . T.runOpaleyeT c . runExceptT . unOpaleyeT $ f)- `catch`- (return . Left . SqlError)- where- mkOpaleyeError (Left e) = Left (DomainError e)- mkOpaleyeError (Right a) = Right a+runOpaleyeT :: PSQL.Connection -> OpaleyeT e m a -> m (Either e a)+runOpaleyeT c = T.runOpaleyeT c . runExceptT . unOpaleyeT withExceptOpaleye :: Functor m => (e -> e') -> OpaleyeT e m a -> OpaleyeT e' m a@@ -127,8 +101,12 @@ withExceptTrans f = Transaction . withExceptT f . unTransaction -withError :: Monad m => T.OpaleyeT m (Either e b) -> OpaleyeT e m b+withError :: Monad m => T.OpaleyeT m (Either e a) -> OpaleyeT e m a withError f = withOpaleye f >>= either throwError return+++withoutError :: Monad m => OpaleyeT e m a -> T.OpaleyeT m (Either e a)+withoutError = runExceptT . unOpaleyeT liftError :: Monad m