import Data.ByteString.Char8 (pack)
import Data.Monoid ((<>))
import Data.String (fromString)
import Database.PostgreSQL.Simple (Only (..), connectPostgreSQL,
query_)
import System.FilePath.Posix ((</>))
import System.Process (system)
import Database.PostgreSQL.Embedded
main :: IO ()
main = do
let sConfig = StartupConfig True (Version "9.6.5-1") False
let dConfig = DBConfig 46782 "postgres"
system $ "rm" <> " -rf " <> ("~/.postgres-embedded/" </> "9.6.5-1")
-- Start Postgres downloading distribution
rc <- startPostgres sConfig dConfig
runQuery dConfig
stopPostgres rc
-- Start Postgres with cached distribution
rc1 <- startPostgres sConfig dConfig
runQuery dConfig
stopPostgres rc1
runQuery :: DBConfig -> IO ()
runQuery (DBConfig p u) = do
conn <- connectPostgreSQL $ pack $ "host=127.0.0.1 port=" <> show p <> " user=" <> u
_ <- (query_ conn $ fromString "select 1") :: IO [Only Int]
return ()