module Hasql.Pool.Config.Config where

import qualified Hasql.Connection as Connection
import Hasql.Pool.Observation (Observation)
import Hasql.Pool.Prelude

-- | Configufation for Hasql connection pool.
data Config = Config
  { Config -> Int
size :: Int,
    Config -> DiffTime
acquisitionTimeout :: DiffTime,
    Config -> DiffTime
agingTimeout :: DiffTime,
    Config -> DiffTime
idlenessTimeout :: DiffTime,
    Config -> IO Settings
connectionSettingsProvider :: IO Connection.Settings,
    Config -> Observation -> IO ()
observationHandler :: Observation -> IO ()
  }

-- | Reasonable defaults, which can be built upon.
defaults :: Config
defaults :: Config
defaults =
  Config
    { size :: Int
size = Int
3,
      acquisitionTimeout :: DiffTime
acquisitionTimeout = DiffTime
10,
      agingTimeout :: DiffTime
agingTimeout = DiffTime
60 DiffTime -> DiffTime -> DiffTime
forall a. Num a => a -> a -> a
* DiffTime
60 DiffTime -> DiffTime -> DiffTime
forall a. Num a => a -> a -> a
* DiffTime
24,
      idlenessTimeout :: DiffTime
idlenessTimeout = DiffTime
60 DiffTime -> DiffTime -> DiffTime
forall a. Num a => a -> a -> a
* DiffTime
10,
      connectionSettingsProvider :: IO Settings
connectionSettingsProvider = Settings -> IO Settings
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Settings
"postgresql://postgres:postgres@localhost:5432/postgres",
      observationHandler :: Observation -> IO ()
observationHandler = IO () -> Observation -> IO ()
forall a b. a -> b -> a
const (() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
    }