-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | Pool of connections for Hasql
--
-- Pool of connections for Hasql
@package hasql-pool
@version 0.8
module Hasql.Pool
-- | A pool of connections to DB.
data Pool
-- | Create a connection-pool.
--
-- No connections actually get established by this function. It is
-- delegated to use.
acquire :: Int -> Maybe Int -> Settings -> IO Pool
-- | Create a connection-pool.
--
-- In difference to acquire new settings get fetched each time a
-- connection is created. This may be useful for some security models.
--
-- No connections actually get established by this function. It is
-- delegated to use.
acquireDynamically :: Int -> Maybe Int -> IO Settings -> IO Pool
-- | Release all the idle connections in the pool, and mark the in-use
-- connections to be released on return. Any connections acquired after
-- the call will be newly established.
release :: Pool -> IO ()
-- | Use a connection from the pool to run a session and return the
-- connection to the pool, when finished.
--
-- Session failing with a ClientError gets interpreted as a loss
-- of connection. In such case the connection does not get returned to
-- the pool and a slot gets freed up for a new connection to be
-- established the next time one is needed. The error still gets returned
-- from this function.
use :: Pool -> Session a -> IO (Either UsageError a)
-- | Union over all errors that use can result in.
data UsageError
-- | Attempt to establish a connection failed.
ConnectionUsageError :: ConnectionError -> UsageError
-- | Session execution failed.
SessionUsageError :: QueryError -> UsageError
-- | Timeout acquiring a connection.
AcquisitionTimeoutUsageError :: UsageError
instance GHC.Classes.Eq Hasql.Pool.UsageError
instance GHC.Show.Show Hasql.Pool.UsageError
instance GHC.Exception.Type.Exception Hasql.Pool.UsageError