packages feed

polysemy-hasql-0.0.1.0: integration/Polysemy/Hasql/Test/DbConfig.hs

module Polysemy.Hasql.Test.DbConfig where

import Exon (exon)
import Polysemy.Db.Data.DbConfig (DbConfig (DbConfig))
import System.Environment (lookupEnv)

dbConfig ::
  MonadIO m =>
  m (Maybe DbConfig)
dbConfig = do
  traverse cons =<< (liftIO (lookupEnv "polysemy_db_test_host"))
  where
    cons host = do
      port <- parsePort =<< (fromMaybe "4321" <$> liftIO (lookupEnv "polysemy_db_test_port"))
      pure (DbConfig (fromString host) port "polysemy-db" "polysemy-db" "polysemy-db")
    parsePort p =
      case readMaybe p of
        Just a -> pure a
        Nothing -> error [exon|invalid port in env var $polysemy_db_test_port: #{p}|]