testcontainers-postgresql-0.0.1: src/library/TestcontainersPostgresql/Configs/Config.hs
module TestcontainersPostgresql.Configs.Config where
import Data.Function
import qualified Data.Text.Lazy as Text.Lazy
import qualified TestContainers
import qualified TestcontainersPostgresql.Configs.Auth as Configs.Auth
import qualified TestcontainersPostgresql.Configs.Distro as Configs.Distro
import Prelude
data Config = Config
{ forwardLogs :: Bool,
distro :: Configs.Distro.Distro,
auth :: Configs.Auth.Auth
}
toContainerRequest :: Config -> TestContainers.ContainerRequest
toContainerRequest (Config forwardLogs distro auth) =
Configs.Distro.toContainerRequest distro
& TestContainers.setExpose [5432]
& TestContainers.setWaitingFor waitUntilReady
& Configs.Auth.updateContainerRequest auth
& (if forwardLogs then TestContainers.withFollowLogs TestContainers.consoleLogConsumer else id)
where
waitUntilReady :: TestContainers.WaitUntilReady
waitUntilReady =
mconcat
[ TestContainers.waitForLogLine TestContainers.Stderr (Text.Lazy.isInfixOf "database system is ready to accept connections"),
TestContainers.waitUntilMappedPortReachable 5432
]