{-# OPTIONS_GHC -Wno-missing-import-lists #-}
module Arbiter.Orville
(
module Arbiter.Orville.MonadArbiter
, createOrvilleConnectionOptions
) where
import Arbiter.Core.PoolConfig (PoolConfig (..))
import Data.ByteString (ByteString)
import Data.ByteString.Char8 qualified as BS8
import Orville.PostgreSQL qualified as O
import Arbiter.Orville.MonadArbiter
createOrvilleConnectionOptions
:: ByteString
-> PoolConfig
-> O.ConnectionOptions
createOrvilleConnectionOptions :: ByteString -> PoolConfig -> ConnectionOptions
createOrvilleConnectionOptions ByteString
connStr PoolConfig
config =
let stripes :: StripeOption
stripes = StripeOption -> (Int -> StripeOption) -> Maybe Int -> StripeOption
forall b a. b -> (a -> b) -> Maybe a -> b
maybe StripeOption
O.OneStripePerCapability Int -> StripeOption
O.StripeCount (PoolConfig -> Maybe Int
poolStripes PoolConfig
config)
in O.ConnectionOptions
{ connectionString :: String
O.connectionString = ByteString -> String
BS8.unpack ByteString
connStr
, connectionNoticeReporting :: NoticeReporting
O.connectionNoticeReporting = NoticeReporting
O.DisableNoticeReporting
, connectionPoolStripes :: StripeOption
O.connectionPoolStripes = StripeOption
stripes
, connectionPoolLingerTime :: NominalDiffTime
O.connectionPoolLingerTime = Int -> NominalDiffTime
forall a b. (Integral a, Num b) => a -> b
fromIntegral (PoolConfig -> Int
poolIdleTimeout PoolConfig
config)
, connectionPoolMaxConnections :: MaxConnections
O.connectionPoolMaxConnections = Int -> MaxConnections
O.MaxConnectionsTotal (PoolConfig -> Int
poolSize PoolConfig
config)
}