packages feed

postgresql-tx-squeal-compat-simple-0.1.0.0: src/Database/PostgreSQL/Tx/Squeal/Compat/Simple.hs

{-# LANGUAGE BlockArguments #-}
module Database.PostgreSQL.Tx.Squeal.Compat.Simple
  ( withSquealConnection
  ) where

import Database.PostgreSQL.Tx.Squeal.Internal (SquealConnection(UnsafeSquealConnection))
import qualified Control.Concurrent as Concurrent
import qualified Database.PostgreSQL.Simple as Simple
import qualified Database.PostgreSQL.Simple.Internal as Simple.Internal

-- | Used in the 'Database.PostgreSQL.Tx.Squeal.Internal.SquealEnv' to specify
-- the 'Database.PostgreSQL.Tx.Squeal.Internal.SquealConnection' from a
-- @postgresql-simple@ 'Simple.Connection'.
--
-- 'Database.PostgreSQL.Tx.Squeal.Internal.mkSquealConnection' should be
-- preferred over this function if you are only working with
-- @postgresql-libpq@ connections.
--
-- @since 0.1.0.0
withSquealConnection :: Simple.Connection -> (SquealConnection -> IO a) -> IO a
withSquealConnection conn f = do
  f $ UnsafeSquealConnection
    $ Concurrent.readMVar
    $ Simple.Internal.connectionHandle conn