tmp-postgres-0.1.0.0: src/Database/Postgres/Temp.hs
{-|
This module provides functions greating a temporary postgres instance on a random port for testing.
@
result <- 'start' []
case result of
Left err -> print err
Right tempDB -> do
-- Do stuff
'stop' tempDB
@
The are few different methods for starting @postgres@ which provide different
methods of dealing with @stdout@ and @stderr@.
The start methods use a config based on the one used by [pg_tmp](http://ephemeralpg.org/), but can be overriden
by in different values to the first argument of the start functions.
-}
{-# LANGUAGE RecordWildCards, LambdaCase, ScopedTypeVariables #-}
module Database.Postgres.Temp
( -- * Types
DB (..)
, StartError (..)
-- * Starting @postgres@
-- $options
, start
, startAndLogToTmp
, startWithHandles
-- * Stopping @postgres@
, stop
) where
import Database.Postgres.Temp.Internal
{- $options
'startWithHandles' is the most general way to start postgres. It allows the user to
pass in it's own handles for @stdout@ and @stderr@. 'start' and 'startAndLogToTmp'
both call 'startWithHandles' passing in different handles. 'start' uses the current
process's @stdout@ and @stderr@ and 'startAndLogToTmp' logs to files in the 'mainDir'.
@postgres@ is started with a default config with the following options:
@
listen_addresses = ''
shared_buffers = 12MB
fsync = off
synchronous_commit = off
full_page_writes = off
log_min_duration_statement = 0
log_connections = on
log_disconnections = on
unix_socket_directories = {mainDir}
client_min_messages = ERROR
@
Any of the options can be overriden by passing in a different value when starting
@
Right db <- 'start' [("log_min_duration_statement", "1000")]
@
-}