packages feed

optima-for-hasql-0.2: library/OptimaForHasql/ParamGroup.hs

module OptimaForHasql.ParamGroup where

import qualified Hasql.Connection as Connection
import qualified Hasql.Pool as Pool
import Optima
import qualified OptimaForHasql.Param as Param
import OptimaForHasql.Prelude

-- |
-- Parser of pool settings as a parameter group.
--
-- Produces a pool acquisition action.
poolAcquirer :: ParamGroup (IO Pool.Pool)
poolAcquirer =
  Pool.acquire
    <$> member "pool-size" Param.poolSize
    <*> member "pool-acquisition-timeout" Param.poolAcquisitionTimeout
    <*> connectionSettings

-- |
-- Parser of connection settings as a parameter group.
connectionSettings :: ParamGroup Connection.Settings
connectionSettings =
  Connection.settings
    <$> member "host" Param.host
    <*> member "port" Param.port
    <*> member "user" Param.user
    <*> member "password" Param.password
    <*> member "database" Param.database