2
2
{-# LANGUAGE FlexibleInstances #-}
3
3
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
4
4
{-# LANGUAGE MultiParamTypeClasses #-}
5
- {-# LANGUAGE TypeFamilies #-}
6
5
7
6
module Database.PostgreSQL.TransactionalStore
8
7
( PGTransaction
@@ -20,29 +19,21 @@ module Database.PostgreSQL.TransactionalStore
20
19
#if __GLASGOW_HASKELL__ < 710
21
20
import Control.Applicative
22
21
#endif
23
- import Control.Monad.Base (MonadBase )
24
- import Control.Monad.Trans.Control (MonadBaseControl (.. ))
25
22
import Control.Monad.Reader
26
23
import Data.Int
27
24
import qualified Database.PostgreSQL.Simple as Postgres
28
25
import Database.PostgreSQL.Simple.FromRow
29
26
import Database.PostgreSQL.Simple.ToRow
30
27
31
28
newtype PGTransaction a =
32
- PGTransaction { unPGTransaction :: ReaderT Postgres. Connection IO a }
29
+ PGTransaction ( ReaderT Postgres. Connection IO a )
33
30
deriving ( Functor
34
31
, Applicative
35
32
, Monad
36
33
, MonadIO
37
34
, MonadReader Postgres.Connection
38
- , MonadBase IO
39
35
)
40
36
41
- instance MonadBaseControl IO PGTransaction where
42
- type StM PGTransaction a = a
43
- liftBaseWith f = PGTransaction $ liftBaseWith $ \ q -> f (q . unPGTransaction)
44
- restoreM = PGTransaction . restoreM
45
-
46
37
runPGTransaction :: MonadIO m => PGTransaction a -> Postgres. Connection -> m a
47
38
runPGTransaction (PGTransaction pgTrans) conn =
48
39
liftIO (Postgres. withTransaction conn (runReaderT pgTrans conn))
0 commit comments