module TestcontainersPostgresql
( Configs.Config.Config (..),
Configs.Distro.Distro (..),
Configs.Auth.Auth (..),
run,
)
where
import Data.Function
import Data.Text (Text)
import qualified TestContainers
import qualified TestContainers.Hspec
import qualified TestcontainersPostgresql.Configs.Auth as Configs.Auth
import qualified TestcontainersPostgresql.Configs.Config as Configs.Config
import qualified TestcontainersPostgresql.Configs.Distro as Configs.Distro
import Prelude
setup :: (TestContainers.MonadDocker m) => Configs.Config.Config -> m (Text, Int)
setup :: forall (m :: * -> *). MonadDocker m => Config -> m (Text, Int)
setup Config
config = do
Container
container <- ContainerRequest -> TestContainer Container
TestContainers.run (Config -> ContainerRequest
Configs.Config.toContainerRequest Config
config)
pure $ Container -> Port -> (Text, Int)
TestContainers.containerAddress Container
container Port
5432
run :: Configs.Config.Config -> ((Text, Int) -> IO ()) -> IO ()
run :: Config -> ((Text, Int) -> IO ()) -> IO ()
run Config
config = do
TestContainer (Text, Int) -> ((Text, Int) -> IO ()) -> IO ()
forall a. TestContainer a -> (a -> IO ()) -> IO ()
TestContainers.Hspec.withContainers (Config -> TestContainer (Text, Int)
forall (m :: * -> *). MonadDocker m => Config -> m (Text, Int)
setup Config
config)