packages feed

haskell-pgmq-0.1.0.0: tests/Test/Integration/Utils.hs

module Test.Integration.Utils
  ( getPSQLEnvConnectInfo
  , randomQueueName )
where

import Data.Maybe (fromMaybe)
import Database.PGMQ.Types (Queue)
import Database.PostgreSQL.Simple qualified as PSQL
import System.Environment (lookupEnv)
import Test.RandomStrings (randomASCII, randomString, onlyLower)


getPSQLEnvConnectInfo :: IO PSQL.ConnectInfo
getPSQLEnvConnectInfo = do
  pgUser <- lookupEnv "POSTGRES_USER"
  pgDb <- lookupEnv "POSTGRES_DB"
  pgPass <- lookupEnv "POSTGRES_PASSWORD"
  pgHost <- lookupEnv "POSTGRES_HOST"
  -- https://hackage.haskell.org/package/postgresql-simple-0.7.0.0/docs/Database-PostgreSQL-Simple.html#t:ConnectInfo
  pure $ PSQL.defaultConnectInfo { PSQL.connectUser = fromMaybe "postgres" pgUser
                                 , PSQL.connectDatabase = fromMaybe "postgres" pgDb
                                 , PSQL.connectHost = fromMaybe "localhost" pgHost
                                 , PSQL.connectPassword = fromMaybe "postgres" pgPass }

randomQueueName :: Queue -> IO Queue
randomQueueName prefix = do
  postfix <- randomString (onlyLower randomASCII) 10
  return $ prefix <> "_" <> postfix