packages feed

persistent-postgresql 2.13.5.2 → 2.13.6

raw patch · 3 files changed

+44/−7 lines, 3 files

Files

ChangeLog.md view
@@ -1,5 +1,12 @@ # Changelog for persistent-postgresql +## 2.13.6 (unreleased)++* [#1511](https://github.com/yesodweb/persistent/pull/1511)+   * Add the `createPostgresqlPoolTailored` function to support creating+     connection pools with a custom connection creation function.+   * Expose `getServerVersion` and `createBackend` for user's convenience.+ ## 2.13.5.2  * [#1471](https://github.com/yesodweb/persistent/pull/1471)
Database/Persist/Postgresql.hs view
@@ -37,6 +37,7 @@     , createPostgresqlPool     , createPostgresqlPoolModified     , createPostgresqlPoolModifiedWithVersion+    , createPostgresqlPoolTailored     , createPostgresqlPoolWithConf     , module Database.Persist.Sql     , ConnectionString@@ -52,6 +53,7 @@     , upsertManyWhere     , openSimpleConn     , openSimpleConnWithVersion+    , getServerVersion     , getSimpleConn     , tableName     , fieldName@@ -65,6 +67,7 @@     , createRawPostgresqlPoolModified     , createRawPostgresqlPoolModifiedWithVersion     , createRawPostgresqlPoolWithConf+    , createBackend     ) where  import qualified Database.PostgreSQL.LibPQ as LibPQ@@ -82,8 +85,8 @@ import Control.Monad.Except import Control.Monad.IO.Unlift (MonadIO(..), MonadUnliftIO) import Control.Monad.Logger (MonadLoggerIO, runNoLoggingT)-import Control.Monad.Trans.Reader (ReaderT(..), asks, runReaderT) import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Reader (ReaderT(..), asks, runReaderT) #if !MIN_VERSION_base(4,12,0) import Control.Monad.Trans.Reader (withReaderT) #endif@@ -102,8 +105,8 @@ import Data.Data (Data) import Data.Either (partitionEithers) import Data.Function (on)-import Data.IORef import Data.Int (Int64)+import Data.IORef import Data.List (find, foldl', groupBy, sort) import qualified Data.List as List import Data.List.NonEmpty (NonEmpty)@@ -122,12 +125,13 @@ #if MIN_VERSION_base(4,12,0) import Database.Persist.Compatible #endif+import qualified Data.Vault.Strict as Vault import Database.Persist.Postgresql.Internal import Database.Persist.Sql import qualified Database.Persist.Sql.Util as Util import Database.Persist.SqlBackend-import Database.Persist.SqlBackend.StatementCache (StatementCache, mkSimpleStatementCache, mkStatementCache)-import qualified Data.Vault.Strict as Vault+import Database.Persist.SqlBackend.StatementCache+       (StatementCache, mkSimpleStatementCache, mkStatementCache) import System.IO.Unsafe (unsafePerformIO)  -- | A @libpq@ connection string.  A simple example of connection@@ -270,9 +274,31 @@     -> ConnectionString -- ^ Connection string to the database.     -> Int -- ^ Number of connections to be kept open in the pool.     -> m (Pool SqlBackend)-createPostgresqlPoolModifiedWithVersion getVerDouble modConn ci = do+createPostgresqlPoolModifiedWithVersion = createPostgresqlPoolTailored open'++-- | Same as 'createPostgresqlPoolModifiedWithVersion', but takes a custom connection-creation+-- function.+--+-- The only time you should reach for this function is if you need to write custom logic for creating+-- a connection to the database.+--+-- @since 2.13.6+createPostgresqlPoolTailored+    :: (MonadUnliftIO m, MonadLoggerIO m)+    =>+    (    (PG.Connection -> IO ())+      -> (PG.Connection -> IO (NonEmpty Word))+      -> ((PG.Connection -> SqlBackend) -> PG.Connection -> SqlBackend)+      -> ConnectionString -> LogFunc -> IO SqlBackend+    ) -- ^ Action that creates a postgresql connection (please see documentation on the un-exported @open'@ function in this same module.+    -> (PG.Connection -> IO (Maybe Double)) -- ^ Action to perform to get the server version.+    -> (PG.Connection -> IO ()) -- ^ Action to perform after connection is created.+    -> ConnectionString -- ^ Connection string to the database.+    -> Int -- ^ Number of connections to be kept open in the pool.+    -> m (Pool SqlBackend)+createPostgresqlPoolTailored createConnection getVerDouble modConn ci = do   let getVer = oldGetVersionToNew getVerDouble-  createSqlPool $ open' modConn getVer id ci+  createSqlPool $ createConnection modConn getVer id ci  -- | Same as 'createPostgresqlPool', but can be configured with 'PostgresConf' and 'PostgresConfHooks'. --@@ -333,6 +359,8 @@     return $ constructor (createBackend logFunc ver smap) conn  -- | Gets the PostgreSQL server version+--+-- @since 2.13.6 getServerVersion :: PG.Connection -> IO (Maybe Double) getServerVersion conn = do   [PG.Only version] <- PG.query_ conn "show server_version";@@ -415,6 +443,8 @@  -- | Create the backend given a logging function, server version, mutable statement cell, -- and connection.+--+-- @since 2.13.6 createBackend :: LogFunc -> NonEmpty Word               -> IORef (Map.Map Text Statement) -> PG.Connection -> SqlBackend createBackend logFunc serverVersion smap conn =
persistent-postgresql.cabal view
@@ -1,5 +1,5 @@ name:            persistent-postgresql-version:         2.13.5.2+version:         2.13.6 license:         MIT license-file:    LICENSE author:          Felipe Lessa, Michael Snoyman <michael@snoyman.com>