{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE UndecidableInstances #-}
{-# OPTIONS_GHC -fno-warn-orphans #-}
module Database.PostgreSQL.Tx.MonadLogger where
import Database.PostgreSQL.Tx (TxM, Tx(TxEnv, tx), UnsafeTx(unsafeIOTx))
import Control.Monad.Logger (LoggingT(runLoggingT), mapLoggingT, Loc, LogSource, LogLevel, LogStr)
type Logger = Loc -> LogSource -> LogLevel -> LogStr -> IO ()
instance Tx (LoggingT TxM) where
type TxEnv (LoggingT TxM) = Logger
tx = flip runLoggingT
instance (UnsafeTx io t) => UnsafeTx (LoggingT io) (LoggingT t) where
unsafeIOTx = mapLoggingT unsafeIOTx