packages feed

testcontainers-postgresql-0.2: src/library/TestcontainersPostgresql.hs

module TestcontainersPostgresql
  ( Configs.Config.Config (..),
    Configs.Auth.Auth (..),
    run,
    setup,
  )
where

import Data.Function
import Data.Text (Text)
import Data.Word (Word16)
import qualified TestContainers
import qualified TestContainers.Hspec
import qualified TestcontainersPostgresql.Configs.Auth as Configs.Auth
import qualified TestcontainersPostgresql.Configs.Config as Configs.Config
import Prelude

setup :: (TestContainers.MonadDocker m) => Configs.Config.Config -> m (Text, Word16)
setup config = do
  container <- TestContainers.run (Configs.Config.toContainerRequest config)
  let (host, port) = TestContainers.containerAddress container 5432
  pure (host, fromIntegral port)

-- | Run a session on a PostgreSQL container in the scope of a host and a port.
run :: Configs.Config.Config -> ((Text, Word16) -> IO ()) -> IO ()
run config = do
  TestContainers.Hspec.withContainers (setup config)