@@ -6,6 +6,8 @@
6 , LambdaCase
6 , LambdaCase
7 , OverloadedStrings
7 , OverloadedStrings
8 , MultiParamTypeClasses
8 , MultiParamTypeClasses
11module Squeal.PostgreSQL.Transaction
13module Squeal.PostgreSQL.Transaction
@@ -23,10 +25,12 @@ import Control.Exception.Lifted
23import Control.Monad.Trans.Control
25import Control.Monad.Trans.Control
24import Data.ByteString
26import Data.ByteString
25import Data.Monoid
27import Data.Monoid
27import Squeal.PostgreSQL.Manipulation
30import Squeal.PostgreSQL.Manipulation
28import Squeal.PostgreSQL.Prettyprint
31import Squeal.PostgreSQL.Prettyprint
29import Squeal.PostgreSQL.PQ
32import Squeal.PostgreSQL.PQ
33+import Squeal.PostgreSQL.Schema
31transactionally
35transactionally
32 :: (MonadBaseControl IO tx, MonadPQ schema tx)
36 :: (MonadBaseControl IO tx, MonadPQ schema tx)
@@ -43,14 +47,16 @@ transactionally_
43 => tx x -> tx x
47 => tx x -> tx x
44transactionally_ = transactionally (TransactionMode ReadCommitted ReadWrite)
48transactionally_ = transactionally (TransactionMode ReadCommitted ReadWrite)
50+type family NilRelation :: RelationType where NilRelation = '[]
46−begin :: MonadPQ schema tx => TransactionMode -> tx (Result '[])
52+begin :: MonadPQ schema tx => TransactionMode -> tx (K Result NilRelation)
47begin mode = manipulate . UnsafeManipulation $
53begin mode = manipulate . UnsafeManipulation $
48 "BEGIN" <+> renderTransactionMode mode <> ";"
54 "BEGIN" <+> renderTransactionMode mode <> ";"
50−commit :: MonadPQ schema tx => tx (Result '[])
56+commit :: MonadPQ schema tx => tx (K Result NilRelation)
51commit = manipulate $ UnsafeManipulation "COMMIT;"
57commit = manipulate $ UnsafeManipulation "COMMIT;"
53−rollback :: MonadPQ schema tx => tx (Result '[])
59+rollback :: MonadPQ schema tx => tx (K Result NilRelation)
54rollback = manipulate $ UnsafeManipulation "ROLLBACK;"
60rollback = manipulate $ UnsafeManipulation "ROLLBACK;"
56data TransactionMode = TransactionMode
62data TransactionMode = TransactionMode