packages feed

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 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