packages feed

relational-query-postgresql-pure-0.1.0.0: test-db/DataSource/Pure.hs

{-# LANGUAGE NamedFieldPuns #-}

module DataSource.Pure (connect) where

import           Data.Default.Class       (def)
import           Data.Maybe               (fromMaybe)
import qualified Database.PostgreSQL.Pure as Pure
import           System.Environment       (lookupEnv)

connect :: IO Pure.Connection
connect = do
  host <- getEnvDef "PURE_HOST" "127.0.0.1"
  port <- getEnvDef "PURE_PORT" "5432"
  user <- getEnvDef "PURE_USER" "postgres"
  password <- getEnvDef "PURE_PASSWORD" ""
  database <- getEnvDef "PURE_DATABASE" "postgres"
  let
    config =
      def
        { Pure.address = Pure.AddressNotResolved host port
        , Pure.user
        , Pure.password
        , Pure.database
        }
  Pure.connect config

getEnvDef :: String -> String -> IO String
getEnvDef name value = fromMaybe value <$> lookupEnv name