----------------------------------------------------------- -- | -- Module : Database.HaskellDB.Connect.HDBC.CatchIO -- Copyright : Kei Hibino 2012 -- License : BSD-style -- -- Maintainer : ex8k.hibino@gmail.com -- Stability : experimental -- Portability : portable -- -- Bracketed HaskellDB session with 'MonadCatchIO'. -- ----------------------------------------------------------- module Database.HaskellDB.Connect.HDBC.CatchIO ( hdbcSession ) where import Database.HDBC (IConnection) import Database.HaskellDB.Database (Database) import Database.HaskellDB.Sql.Generate (SqlGenerator) import Database.HaskellDB.Connect.HDBC (makeHDBCSession) import Control.Monad.IO.Class (liftIO) import Control.Monad.CatchIO (MonadCatchIO, bracket) -- | Run an action on a HDBC IConnection and close the connection. -- 'MonadCatchIO' version. hdbcSession :: (MonadCatchIO m, IConnection conn) => SqlGenerator -> IO conn -- ^ Connect action -> (conn -> Database -> m a) -- ^ Transaction body -> m a hdbcSession gen = makeHDBCSession bracket liftIO gen