packages feed

postgresql-replicant-0.2.0.0: src/Database/PostgreSQL/Replicant/Settings.hs

module Database.PostgreSQL.Replicant.Settings where

import Data.ByteString (ByteString)
import qualified Data.ByteString.Char8 as B

data PgSettings
  = PgSettings
  { pgUser        :: String
  , pgPassword    :: Maybe String
  , pgDbName      :: String
  , pgHost        :: String
  , pgPort        :: String
  , pgSlotName    :: String
  , pgUpdateDelay :: String -- ^ Controls how frequently the
                            -- primaryKeepAlive thread updates
                            -- PostgresSQL in @ms@
  }
  deriving (Eq, Show)

pgConnectionString :: PgSettings -> ByteString
pgConnectionString PgSettings {..} = B.intercalate " "
  [ "user=" <> B.pack pgUser
  , maybe "" (\pgPass -> "pass=" <> B.pack pgPass) pgPassword
  , "dbname=" <> B.pack pgDbName
  , "host=" <> B.pack pgHost
  , "port=" <> B.pack pgPort
  , "replication=database"
  ]