packages feed

superevent-0.1.0.0: src/SuperEvent/Store/Hasql/Utils.hs

module SuperEvent.Store.Hasql.Utils where

import qualified Hasql.Pool as P
import qualified Hasql.Session as S
import qualified Hasql.Transaction as Tx
import qualified Hasql.Transaction.Sessions as Tx

newtype Store
    = Store
    { unStore :: P.Pool }

dbTx :: Tx.IsolationLevel -> Tx.Mode -> Tx.Transaction a -> S.Session a
dbTx = Tx.transaction

withPool :: Store -> S.Session a -> IO a
withPool pss sess =
    do res <- P.use (unStore pss) sess
       case res of
         Left err -> fail (show err)
         Right ok -> pure ok