{-# LANGUAGE AllowAmbiguousTypes #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE TypeFamilies #-}
module Database.PostgreSQL.Tx.Squeal
( SquealEnv
, SquealM
, SquealTxM'(SquealTxM, fromSquealTxM)
, SquealTxM
, SquealConnection
, mkSquealConnection
, module Database.PostgreSQL.Tx.Squeal
, module Database.PostgreSQL.Tx.Squeal.Internal.Reexport
) where
import Control.Exception (Exception)
import Data.ByteString (ByteString)
import Database.PostgreSQL.Tx (TxM, shouldRetryTx)
import Database.PostgreSQL.Tx.Squeal.Internal
import Database.PostgreSQL.Tx.Squeal.Internal.Reexport
import qualified Database.PostgreSQL.LibPQ as LibPQ
import qualified Generics.SOP as SOP
import qualified Generics.SOP.Record as SOP
import qualified Squeal.PostgreSQL as Squeal
getRow :: LibPQ.Row -> Result y -> SquealTxM db y
getRow :: Row -> Result y -> SquealTxM db y
getRow = (Row -> Result y -> PQ db db IO y)
-> Row -> Result y -> SquealTxM db y
forall x1 x2 (db :: SchemasType) a.
(x1 -> x2 -> PQ db db IO a) -> x1 -> x2 -> SquealTxM db a
unsafeSquealIOTxM2 Row -> Result y -> PQ db db IO y
forall (io :: * -> *) y. MonadIO io => Row -> Result y -> io y
Squeal.getRow
firstRow :: Result y -> SquealTxM db (Maybe y)
firstRow :: Result y -> SquealTxM db (Maybe y)
firstRow = (Result y -> PQ db db IO (Maybe y))
-> Result y -> SquealTxM db (Maybe y)
forall x1 (db :: SchemasType) a.
(x1 -> PQ db db IO a) -> x1 -> SquealTxM db a
unsafeSquealIOTxM1 Result y -> PQ db db IO (Maybe y)
forall (io :: * -> *) y. MonadIO io => Result y -> io (Maybe y)
Squeal.firstRow
getRows :: Result y -> SquealTxM db [y]
getRows :: Result y -> SquealTxM db [y]
getRows = (Result y -> PQ db db IO [y]) -> Result y -> SquealTxM db [y]
forall x1 (db :: SchemasType) a.
(x1 -> PQ db db IO a) -> x1 -> SquealTxM db a
unsafeSquealIOTxM1 Result y -> PQ db db IO [y]
forall (io :: * -> *) y. MonadIO io => Result y -> io [y]
Squeal.getRows
nextRow :: LibPQ.Row -> Result y -> LibPQ.Row -> SquealTxM db (Maybe (LibPQ.Row, y))
nextRow :: Row -> Result y -> Row -> SquealTxM db (Maybe (Row, y))
nextRow = (Row -> Result y -> Row -> PQ db db IO (Maybe (Row, y)))
-> Row -> Result y -> Row -> SquealTxM db (Maybe (Row, y))
forall x1 x2 x3 (db :: SchemasType) a.
(x1 -> x2 -> x3 -> PQ db db IO a)
-> x1 -> x2 -> x3 -> SquealTxM db a
unsafeSquealIOTxM3 Row -> Result y -> Row -> PQ db db IO (Maybe (Row, y))
forall (io :: * -> *) y.
MonadIO io =>
Row -> Result y -> Row -> io (Maybe (Row, y))
Squeal.nextRow
ntuples :: Result y -> SquealTxM db LibPQ.Row
ntuples :: Result y -> SquealTxM db Row
ntuples = (Result y -> PQ db db IO Row) -> Result y -> SquealTxM db Row
forall x1 (db :: SchemasType) a.
(x1 -> PQ db db IO a) -> x1 -> SquealTxM db a
unsafeSquealIOTxM1 Result y -> PQ db db IO Row
forall (io :: * -> *) y. MonadIO io => Result y -> io Row
Squeal.ntuples
nfields :: Result y -> SquealTxM db LibPQ.Column
nfields :: Result y -> SquealTxM db Column
nfields = (Result y -> PQ db db IO Column) -> Result y -> SquealTxM db Column
forall x1 (db :: SchemasType) a.
(x1 -> PQ db db IO a) -> x1 -> SquealTxM db a
unsafeSquealIOTxM1 Result y -> PQ db db IO Column
forall (io :: * -> *) y. MonadIO io => Result y -> io Column
Squeal.nfields
resultStatus :: Result y -> SquealTxM db ExecStatus
resultStatus :: Result y -> SquealTxM db ExecStatus
resultStatus = (Result y -> PQ db db IO ExecStatus)
-> Result y -> SquealTxM db ExecStatus
forall x1 (db :: SchemasType) a.
(x1 -> PQ db db IO a) -> x1 -> SquealTxM db a
unsafeSquealIOTxM1 Result y -> PQ db db IO ExecStatus
forall (io :: * -> *) y. MonadIO io => Result y -> io ExecStatus
Squeal.resultStatus
okResult :: Result y -> SquealTxM db ()
okResult :: Result y -> SquealTxM db ()
okResult = (Result y -> PQ db db IO ()) -> Result y -> SquealTxM db ()
forall x1 (db :: SchemasType) a.
(x1 -> PQ db db IO a) -> x1 -> SquealTxM db a
unsafeSquealIOTxM1 Result y -> PQ db db IO ()
forall (io :: * -> *) y. MonadIO io => Result y -> io ()
Squeal.okResult
resultErrorMessage :: Result y -> SquealTxM db (Maybe ByteString)
resultErrorMessage :: Result y -> SquealTxM db (Maybe ByteString)
resultErrorMessage = (Result y -> PQ db db IO (Maybe ByteString))
-> Result y -> SquealTxM db (Maybe ByteString)
forall x1 (db :: SchemasType) a.
(x1 -> PQ db db IO a) -> x1 -> SquealTxM db a
unsafeSquealIOTxM1 Result y -> PQ db db IO (Maybe ByteString)
forall (io :: * -> *) y.
MonadIO io =>
Result y -> io (Maybe ByteString)
Squeal.resultErrorMessage
resultErrorCode :: Result y -> SquealTxM db (Maybe ByteString)
resultErrorCode :: Result y -> SquealTxM db (Maybe ByteString)
resultErrorCode = (Result y -> PQ db db IO (Maybe ByteString))
-> Result y -> SquealTxM db (Maybe ByteString)
forall x1 (db :: SchemasType) a.
(x1 -> PQ db db IO a) -> x1 -> SquealTxM db a
unsafeSquealIOTxM1 Result y -> PQ db db IO (Maybe ByteString)
forall (io :: * -> *) y.
MonadIO io =>
Result y -> io (Maybe ByteString)
Squeal.resultErrorCode
executeParams :: Statement db x y -> x -> SquealTxM db (Result y)
executeParams :: Statement db x y -> x -> SquealTxM db (Result y)
executeParams = (Statement db x y -> x -> PQ db db IO (Result y))
-> Statement db x y -> x -> SquealTxM db (Result y)
forall x1 x2 (db :: SchemasType) a.
(x1 -> x2 -> PQ db db IO a) -> x1 -> x2 -> SquealTxM db a
unsafeSquealIOTxM2 Statement db x y -> x -> PQ db db IO (Result y)
forall (db :: SchemasType) (pq :: * -> *) x y.
MonadPQ db pq =>
Statement db x y -> x -> pq (Result y)
Squeal.executeParams
executeParams_ :: Statement db x () -> x -> SquealTxM db ()
executeParams_ :: Statement db x () -> x -> SquealTxM db ()
executeParams_ = (Statement db x () -> x -> PQ db db IO ())
-> Statement db x () -> x -> SquealTxM db ()
forall x1 x2 (db :: SchemasType) a.
(x1 -> x2 -> PQ db db IO a) -> x1 -> x2 -> SquealTxM db a
unsafeSquealIOTxM2 Statement db x () -> x -> PQ db db IO ()
forall (db :: SchemasType) (pq :: * -> *) x.
MonadPQ db pq =>
Statement db x () -> x -> pq ()
Squeal.executeParams_
execute :: Statement db () y -> SquealTxM db (Result y)
execute :: Statement db () y -> SquealTxM db (Result y)
execute = (Statement db () y -> PQ db db IO (Result y))
-> Statement db () y -> SquealTxM db (Result y)
forall x1 (db :: SchemasType) a.
(x1 -> PQ db db IO a) -> x1 -> SquealTxM db a
unsafeSquealIOTxM1 Statement db () y -> PQ db db IO (Result y)
forall (db :: SchemasType) (pq :: * -> *) y.
MonadPQ db pq =>
Statement db () y -> pq (Result y)
Squeal.execute
execute_ :: Statement db () () -> SquealTxM db ()
execute_ :: Statement db () () -> SquealTxM db ()
execute_ = (Statement db () () -> PQ db db IO ())
-> Statement db () () -> SquealTxM db ()
forall x1 (db :: SchemasType) a.
(x1 -> PQ db db IO a) -> x1 -> SquealTxM db a
unsafeSquealIOTxM1 Statement db () () -> PQ db db IO ()
forall (db :: SchemasType) (pq :: * -> *).
MonadPQ db pq =>
Statement db () () -> pq ()
Squeal.execute_
executePrepared
:: (Traversable list)
=> Statement db x y -> list x -> SquealTxM db (list (Result y))
executePrepared :: Statement db x y -> list x -> SquealTxM db (list (Result y))
executePrepared = (Statement db x y -> list x -> PQ db db IO (list (Result y)))
-> Statement db x y -> list x -> SquealTxM db (list (Result y))
forall x1 x2 (db :: SchemasType) a.
(x1 -> x2 -> PQ db db IO a) -> x1 -> x2 -> SquealTxM db a
unsafeSquealIOTxM2 Statement db x y -> list x -> PQ db db IO (list (Result y))
forall (db :: SchemasType) (pq :: * -> *) (list :: * -> *) x y.
(MonadPQ db pq, Traversable list) =>
Statement db x y -> list x -> pq (list (Result y))
Squeal.executePrepared
executePrepared_
:: (Foldable list)
=> Statement db x () -> list x -> SquealTxM db ()
executePrepared_ :: Statement db x () -> list x -> SquealTxM db ()
executePrepared_ = (Statement db x () -> list x -> PQ db db IO ())
-> Statement db x () -> list x -> SquealTxM db ()
forall x1 x2 (db :: SchemasType) a.
(x1 -> x2 -> PQ db db IO a) -> x1 -> x2 -> SquealTxM db a
unsafeSquealIOTxM2 Statement db x () -> list x -> PQ db db IO ()
forall (db :: SchemasType) (pq :: * -> *) (list :: * -> *) x.
(MonadPQ db pq, Foldable list) =>
Statement db x () -> list x -> pq ()
Squeal.executePrepared_
manipulateParams
:: ( GenericParams db params x xs
, Squeal.GenericRow row y ys
)
=> Manipulation '[] db params row
-> x
-> SquealTxM db (Result y)
manipulateParams :: Manipulation '[] db params row -> x -> SquealTxM db (Result y)
manipulateParams = (Manipulation '[] db params row -> x -> PQ db db IO (Result y))
-> Manipulation '[] db params row -> x -> SquealTxM db (Result y)
forall x1 x2 (db :: SchemasType) a.
(x1 -> x2 -> PQ db db IO a) -> x1 -> x2 -> SquealTxM db a
unsafeSquealIOTxM2 Manipulation '[] db params row -> x -> PQ db db IO (Result y)
forall (db :: SchemasType) (pq :: * -> *) (params :: [NullType]) x
(xs :: [*]) (row :: RowType) y (ys :: RecordCode).
(MonadPQ db pq, GenericParams db params x xs,
GenericRow row y ys) =>
Manipulation '[] db params row -> x -> pq (Result y)
Squeal.manipulateParams
manipulateParams_
:: (GenericParams db params x xs)
=> Manipulation '[] db params '[] -> x -> SquealTxM db ()
manipulateParams_ :: Manipulation '[] db params '[] -> x -> SquealTxM db ()
manipulateParams_ = (Manipulation '[] db params '[] -> x -> PQ db db IO ())
-> Manipulation '[] db params '[] -> x -> SquealTxM db ()
forall x1 x2 (db :: SchemasType) a.
(x1 -> x2 -> PQ db db IO a) -> x1 -> x2 -> SquealTxM db a
unsafeSquealIOTxM2 Manipulation '[] db params '[] -> x -> PQ db db IO ()
forall (db :: SchemasType) (pq :: * -> *) (params :: [NullType]) x
(xs :: [*]).
(MonadPQ db pq, GenericParams db params x xs) =>
Manipulation '[] db params '[] -> x -> pq ()
Squeal.manipulateParams_
manipulate
:: (Squeal.GenericRow row y ys)
=> Manipulation '[] db '[] row -> SquealTxM db (Result y)
manipulate :: Manipulation '[] db '[] row -> SquealTxM db (Result y)
manipulate = (Manipulation '[] db '[] row -> PQ db db IO (Result y))
-> Manipulation '[] db '[] row -> SquealTxM db (Result y)
forall x1 (db :: SchemasType) a.
(x1 -> PQ db db IO a) -> x1 -> SquealTxM db a
unsafeSquealIOTxM1 Manipulation '[] db '[] row -> PQ db db IO (Result y)
forall (db :: SchemasType) (pq :: * -> *) (row :: RowType) y
(ys :: RecordCode).
(MonadPQ db pq, GenericRow row y ys) =>
Manipulation '[] db '[] row -> pq (Result y)
Squeal.manipulate
manipulate_
:: Manipulation '[] db '[] '[] -> SquealTxM db ()
manipulate_ :: Manipulation '[] db '[] '[] -> SquealTxM db ()
manipulate_ = (Manipulation '[] db '[] '[] -> PQ db db IO ())
-> Manipulation '[] db '[] '[] -> SquealTxM db ()
forall x1 (db :: SchemasType) a.
(x1 -> PQ db db IO a) -> x1 -> SquealTxM db a
unsafeSquealIOTxM1 Manipulation '[] db '[] '[] -> PQ db db IO ()
forall (db :: SchemasType) (pq :: * -> *).
MonadPQ db pq =>
Manipulation '[] db '[] '[] -> pq ()
Squeal.manipulate_
runQueryParams
:: ( GenericParams db params x xs
, SOP.IsRecord y ys
, SOP.AllZip Squeal.FromField row ys
)
=> Squeal.Query '[] '[] db params row -> x -> SquealTxM db (Result y)
runQueryParams :: Query '[] '[] db params row -> x -> SquealTxM db (Result y)
runQueryParams = (Query '[] '[] db params row -> x -> PQ db db IO (Result y))
-> Query '[] '[] db params row -> x -> SquealTxM db (Result y)
forall x1 x2 (db :: SchemasType) a.
(x1 -> x2 -> PQ db db IO a) -> x1 -> x2 -> SquealTxM db a
unsafeSquealIOTxM2 Query '[] '[] db params row -> x -> PQ db db IO (Result y)
forall (db :: SchemasType) (pq :: * -> *) (params :: [NullType]) x
(xs :: [*]) y (ys :: RecordCode) (row :: RowType).
(MonadPQ db pq, GenericParams db params x xs, IsRecord y ys,
AllZip FromField row ys) =>
Query '[] '[] db params row -> x -> pq (Result y)
Squeal.runQueryParams
runQuery
:: ( SOP.IsRecord y ys
, SOP.AllZip Squeal.FromField row ys
)
=> Squeal.Query '[] '[] db '[] row -> SquealTxM db (Result y)
runQuery :: Query '[] '[] db '[] row -> SquealTxM db (Result y)
runQuery = (Query '[] '[] db '[] row -> PQ db db IO (Result y))
-> Query '[] '[] db '[] row -> SquealTxM db (Result y)
forall x1 (db :: SchemasType) a.
(x1 -> PQ db db IO a) -> x1 -> SquealTxM db a
unsafeSquealIOTxM1 Query '[] '[] db '[] row -> PQ db db IO (Result y)
forall (db :: SchemasType) (pq :: * -> *) y (ys :: RecordCode)
(row :: RowType).
(MonadPQ db pq, IsRecord y ys, AllZip FromField row ys) =>
Query '[] '[] db '[] row -> pq (Result y)
Squeal.runQuery
traversePrepared
:: ( GenericParams db params x xs
, Traversable list
, SOP.IsRecord y ys
, SOP.AllZip Squeal.FromField row ys
)
=> Manipulation '[] db params row
-> list x
-> SquealTxM db (list (Result y))
traversePrepared :: Manipulation '[] db params row
-> list x -> SquealTxM db (list (Result y))
traversePrepared = (Manipulation '[] db params row
-> list x -> PQ db db IO (list (Result y)))
-> Manipulation '[] db params row
-> list x
-> SquealTxM db (list (Result y))
forall x1 x2 (db :: SchemasType) a.
(x1 -> x2 -> PQ db db IO a) -> x1 -> x2 -> SquealTxM db a
unsafeSquealIOTxM2 Manipulation '[] db params row
-> list x -> PQ db db IO (list (Result y))
forall (db :: SchemasType) (pq :: * -> *) (params :: [NullType]) x
(xs :: [*]) (list :: * -> *) y (ys :: RecordCode) (row :: RowType).
(MonadPQ db pq, GenericParams db params x xs, Traversable list,
IsRecord y ys, AllZip FromField row ys) =>
Manipulation '[] db params row -> list x -> pq (list (Result y))
Squeal.traversePrepared
forPrepared
:: ( GenericParams db params x xs
, Traversable list
, SOP.IsRecord y ys
, SOP.AllZip Squeal.FromField row ys
)
=> list x
-> Manipulation '[] db params row
-> SquealTxM db (list (Result y))
forPrepared :: list x
-> Manipulation '[] db params row -> SquealTxM db (list (Result y))
forPrepared = (list x
-> Manipulation '[] db params row -> PQ db db IO (list (Result y)))
-> list x
-> Manipulation '[] db params row
-> SquealTxM db (list (Result y))
forall x1 x2 (db :: SchemasType) a.
(x1 -> x2 -> PQ db db IO a) -> x1 -> x2 -> SquealTxM db a
unsafeSquealIOTxM2 list x
-> Manipulation '[] db params row -> PQ db db IO (list (Result y))
forall (db :: SchemasType) (pq :: * -> *) (params :: [NullType]) x
(xs :: [*]) (list :: * -> *) y (ys :: RecordCode) (row :: RowType).
(MonadPQ db pq, GenericParams db params x xs, Traversable list,
IsRecord y ys, AllZip FromField row ys) =>
list x -> Manipulation '[] db params row -> pq (list (Result y))
Squeal.forPrepared
traversePrepared_
:: ( GenericParams db params x xs
, Foldable list
)
=> Manipulation '[] db params '[]
-> list x
-> SquealTxM db ()
traversePrepared_ :: Manipulation '[] db params '[] -> list x -> SquealTxM db ()
traversePrepared_ = (Manipulation '[] db params '[] -> list x -> PQ db db IO ())
-> Manipulation '[] db params '[] -> list x -> SquealTxM db ()
forall x1 x2 (db :: SchemasType) a.
(x1 -> x2 -> PQ db db IO a) -> x1 -> x2 -> SquealTxM db a
unsafeSquealIOTxM2 Manipulation '[] db params '[] -> list x -> PQ db db IO ()
forall (db :: SchemasType) (pq :: * -> *) (params :: [NullType]) x
(xs :: [*]) (list :: * -> *).
(MonadPQ db pq, GenericParams db params x xs, Foldable list) =>
Manipulation '[] db params '[] -> list x -> pq ()
Squeal.traversePrepared_
forPrepared_
:: ( GenericParams db params x xs
, Foldable list
)
=> list x
-> Manipulation '[] db params '[]
-> SquealTxM db ()
forPrepared_ :: list x -> Manipulation '[] db params '[] -> SquealTxM db ()
forPrepared_ = (list x -> Manipulation '[] db params '[] -> PQ db db IO ())
-> list x -> Manipulation '[] db params '[] -> SquealTxM db ()
forall x1 x2 (db :: SchemasType) a.
(x1 -> x2 -> PQ db db IO a) -> x1 -> x2 -> SquealTxM db a
unsafeSquealIOTxM2 list x -> Manipulation '[] db params '[] -> PQ db db IO ()
forall (db :: SchemasType) (pq :: * -> *) (params :: [NullType]) x
(xs :: [*]) (list :: * -> *).
(MonadPQ db pq, GenericParams db params x xs, Foldable list) =>
list x -> Manipulation '[] db params '[] -> pq ()
Squeal.forPrepared_
transactionally :: (SquealEnv r) => TransactionMode -> r -> TxM r a -> IO a
transactionally :: TransactionMode -> r -> TxM r a -> IO a
transactionally TransactionMode
m = (forall (db :: SchemasType). PQ db db IO a -> PQ db db IO a)
-> r -> TxM r a -> IO a
forall r a.
SquealEnv r =>
(forall (db :: SchemasType). PQ db db IO a -> PQ db db IO a)
-> r -> TxM r a -> IO a
unsafeRunSquealTransaction (TransactionMode -> PQ db db IO a -> PQ db db IO a
forall (tx :: * -> *) (db :: SchemasType) x.
(MonadUnliftIO tx, MonadPQ db tx) =>
TransactionMode -> tx x -> tx x
Squeal.transactionally TransactionMode
m)
transactionally_ :: (SquealEnv r) => r -> TxM r a -> IO a
transactionally_ :: r -> TxM r a -> IO a
transactionally_ = (forall (db :: SchemasType). PQ db db IO a -> PQ db db IO a)
-> r -> TxM r a -> IO a
forall r a.
SquealEnv r =>
(forall (db :: SchemasType). PQ db db IO a -> PQ db db IO a)
-> r -> TxM r a -> IO a
unsafeRunSquealTransaction forall (db :: SchemasType). PQ db db IO a -> PQ db db IO a
forall (tx :: * -> *) (db :: SchemasType) x.
(MonadUnliftIO tx, MonadPQ db tx) =>
tx x -> tx x
Squeal.transactionally_
transactionallySerializable :: (SquealEnv r) => r -> TxM r a -> IO a
transactionallySerializable :: r -> TxM r a -> IO a
transactionallySerializable =
TransactionMode -> (TxException -> Bool) -> r -> TxM r a -> IO a
forall r e a.
(SquealEnv r, Exception e) =>
TransactionMode -> (e -> Bool) -> r -> TxM r a -> IO a
transactionallyRetry TransactionMode
mode TxException -> Bool
shouldRetryTx
where
mode :: TransactionMode
mode =
IsolationLevel -> AccessMode -> DeferrableMode -> TransactionMode
TransactionMode
IsolationLevel
Serializable
AccessMode
ReadWrite
DeferrableMode
NotDeferrable
transactionallyRetry
:: (SquealEnv r, Exception e)
=> TransactionMode -> (e -> Bool) -> r -> TxM r a -> IO a
transactionallyRetry :: TransactionMode -> (e -> Bool) -> r -> TxM r a -> IO a
transactionallyRetry TransactionMode
m e -> Bool
shouldRetry =
(forall (db :: SchemasType). PQ db db IO a -> PQ db db IO a)
-> r -> TxM r a -> IO a
forall r a.
SquealEnv r =>
(forall (db :: SchemasType). PQ db db IO a -> PQ db db IO a)
-> r -> TxM r a -> IO a
unsafeRunSquealTransaction (TransactionMode -> (e -> Bool) -> PQ db db IO a -> PQ db db IO a
forall (m :: * -> *) (db :: SchemasType) e a.
(MonadUnliftIO m, MonadPQ db m, Exception e) =>
TransactionMode -> (e -> Bool) -> m a -> m a
transactionallyRetry' TransactionMode
m e -> Bool
shouldRetry)
ephemerally :: (SquealEnv r) => TransactionMode -> r -> TxM r a -> IO a
ephemerally :: TransactionMode -> r -> TxM r a -> IO a
ephemerally TransactionMode
m = (forall (db :: SchemasType). PQ db db IO a -> PQ db db IO a)
-> r -> TxM r a -> IO a
forall r a.
SquealEnv r =>
(forall (db :: SchemasType). PQ db db IO a -> PQ db db IO a)
-> r -> TxM r a -> IO a
unsafeRunSquealTransaction (TransactionMode -> PQ db db IO a -> PQ db db IO a
forall (tx :: * -> *) (db :: SchemasType) x.
(MonadUnliftIO tx, MonadPQ db tx) =>
TransactionMode -> tx x -> tx x
Squeal.ephemerally TransactionMode
m)
ephemerally_ :: (SquealEnv r) => r -> TxM r a -> IO a
ephemerally_ :: r -> TxM r a -> IO a
ephemerally_ = (forall (db :: SchemasType). PQ db db IO a -> PQ db db IO a)
-> r -> TxM r a -> IO a
forall r a.
SquealEnv r =>
(forall (db :: SchemasType). PQ db db IO a -> PQ db db IO a)
-> r -> TxM r a -> IO a
unsafeRunSquealTransaction forall (db :: SchemasType). PQ db db IO a -> PQ db db IO a
forall (tx :: * -> *) (db :: SchemasType) x.
(MonadUnliftIO tx, MonadPQ db tx) =>
tx x -> tx x
Squeal.ephemerally_