module Main.IO where
import Rebase.Prelude
import qualified Hasql.Session as A
import qualified Hasql.Connection as B
session :: A.Session a -> IO a
session session =
withConnection (A.run session) >>=
either (fail . show) (either (fail . show) return)
where
withConnection :: (B.Connection -> IO a) -> IO (Either B.ConnectionError a)
withConnection handler =
runExceptT $ acquire >>= \connection -> use connection <* release connection
where
acquire =
ExceptT $ B.acquire settings
where
settings =
B.settings host port user password database
where
host = "localhost"
port = 5432
user = "postgres"
password = ""
database = "postgres"
use connection =
lift $ handler connection
release connection =
lift $ B.release connection