postgresql-tx-monad-logger 0.1.0.0 → 0.2.0.0
raw patch · 5 files changed
+49/−17 lines, 5 filesdep ~postgresql-txnew-uploaderPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: postgresql-tx
API changes (from Hackage documentation)
- Database.PostgreSQL.Tx.MonadLogger: instance Database.PostgreSQL.Tx.Tx (Control.Monad.Logger.LoggingT Database.PostgreSQL.Tx.TxM)
- Database.PostgreSQL.Tx.MonadLogger: instance Database.PostgreSQL.Tx.UnsafeTx io t => Database.PostgreSQL.Tx.UnsafeTx (Control.Monad.Logger.LoggingT io) (Control.Monad.Logger.LoggingT t)
+ Database.PostgreSQL.Tx.MonadLogger: instance Database.PostgreSQL.Tx.Internal.TxEnv Database.PostgreSQL.Tx.MonadLogger.Logger r => Control.Monad.Logger.MonadLogger (Database.PostgreSQL.Tx.Internal.TxM r)
+ Database.PostgreSQL.Tx.MonadLogger.Unsafe: unsafeRunLoggerIOInTxM :: TxEnv Logger r => LoggingT IO a -> TxM r a
Files
- CHANGELOG.md +6/−1
- package.yaml +3/−3
- postgresql-tx-monad-logger.cabal +5/−5
- src/Database/PostgreSQL/Tx/MonadLogger.hs +16/−8
- src/Database/PostgreSQL/Tx/MonadLogger/Unsafe.hs +19/−0
CHANGELOG.md view
@@ -1,5 +1,10 @@ # Change log +## 0.2.0.0++* Updated for postgresql-tx-0.2.0.0.+* Added an `Unsafe` module with `unsafeRunLoggerIOInTxM`.+ ## 0.1.0.0 -Initial release+* Initial release
package.yaml view
@@ -1,6 +1,6 @@ name: postgresql-tx-monad-logger-version: 0.1.0.0-github: "simspace/postgresql-tx/monad-logger"+version: 0.2.0.0+github: "simspace/postgresql-tx" license: BSD3 license-file: LICENSE.md author: "Cary Robbins"@@ -21,7 +21,7 @@ dependencies: - base >= 4.7 && < 5 - monad-logger >= 0.3.32 && < 0.4-- postgresql-tx >= 0.1.0.0 && < 0.2+- postgresql-tx >= 0.2.0.0 && < 0.3 library: source-dirs: src
postgresql-tx-monad-logger.cabal view
@@ -1,13 +1,13 @@ cabal-version: 1.12 --- This file has been generated from package.yaml by hpack version 0.33.0.+-- This file has been generated from package.yaml by hpack version 0.31.2. -- -- see: https://github.com/sol/hpack ----- hash: 92765a23465a542f737f8281f341cfbb58f06d8b0868c80f4f0c1a5a75950ab2+-- hash: 5d7a346f18014ef008263c19cbdb04cda5e384511dbc3450ebcfcb9ee61f706b name: postgresql-tx-monad-logger-version: 0.1.0.0+version: 0.2.0.0 synopsis: postgresql-tx interfacing for use with monad-logger. description: Please see the README on GitHub at <https://github.com/simspace/postgresql-tx#readme> category: Database@@ -27,11 +27,11 @@ source-repository head type: git location: https://github.com/simspace/postgresql-tx- subdir: monad-logger library exposed-modules: Database.PostgreSQL.Tx.MonadLogger+ Database.PostgreSQL.Tx.MonadLogger.Unsafe other-modules: Paths_postgresql_tx_monad_logger hs-source-dirs:@@ -40,5 +40,5 @@ build-depends: base >=4.7 && <5 , monad-logger >=0.3.32 && <0.4- , postgresql-tx >=0.1.0.0 && <0.2+ , postgresql-tx >=0.2.0.0 && <0.3 default-language: Haskell2010
src/Database/PostgreSQL/Tx/MonadLogger.hs view
@@ -1,18 +1,26 @@+{-# LANGUAGE BlockArguments #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE RankNTypes #-}+{-# LANGUAGE TypeApplications #-} {-# 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)+import Control.Monad.Logger (MonadLogger(monadLoggerLog), Loc, LogLevel, LogSource, LogStr, toLogStr)+import Database.PostgreSQL.Tx (TxEnv, TxM, askTxEnv)+import Database.PostgreSQL.Tx.Unsafe (unsafeRunIOInTxM) +-- | A logging function compatible with @monad-logger@.+--+-- @since 0.1.0.0 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+-- | Orphan instance for running @monad-logger@ functions in 'TxM'.+--+-- @since 0.2.0.0+instance (TxEnv Logger r) => MonadLogger (TxM r) where+ monadLoggerLog loc src lvl msg = do+ logger <- askTxEnv+ unsafeRunIOInTxM $ logger loc src lvl (toLogStr msg)
+ src/Database/PostgreSQL/Tx/MonadLogger/Unsafe.hs view
@@ -0,0 +1,19 @@+{-# LANGUAGE BlockArguments #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE TypeApplications #-}+module Database.PostgreSQL.Tx.MonadLogger.Unsafe where++import Control.Monad.Logger (LoggingT(runLoggingT))+import Database.PostgreSQL.Tx (TxEnv, TxM, askTxEnv)+import Database.PostgreSQL.Tx.MonadLogger (Logger)+import Database.PostgreSQL.Tx.Unsafe (unsafeRunIOInTxM)++-- | Promote a 'LoggingT' over 'IO' to 'TxM'.+-- Use this function with care - arbitrary 'IO' should only be run+-- within a transaction when truly necessary.+--+-- @since 0.2.0.0+unsafeRunLoggerIOInTxM :: (TxEnv Logger r) => LoggingT IO a -> TxM r a+unsafeRunLoggerIOInTxM x = do+ logger <- askTxEnv+ unsafeRunIOInTxM $ runLoggingT x logger