sednaDBXML-0.1.2.4: src/Database/Sedna.hs
module Database.Sedna where
import Database.SednaBindings
import Database.SednaTypes
import Control.Exception
import Data.ByteString.Char8
-------------------------------------------------------------------------------
withTransaction :: SednaConnection -> (SednaConnection -> IO a) -> IO a
withTransaction conn func =
do
sednaBegin conn
r <- onException (func conn) doRollback
sednaCommit conn
return r
where doRollback =
Control.Exception.catch (sednaRollBack conn) doRollbackHandler
-- Discard any exception from (sednaRollBack conn) so original
-- exception can be re-raised
doRollbackHandler :: SomeException -> IO ()
doRollbackHandler _ = return ()
-------------------------------------------------------------------------------
loadXMLFile :: SednaConnection -> FilePath -> Document -> Collection -> IO ()
loadXMLFile conn path doc coll = withTransaction conn $
(\conn' -> sednaLoadFile conn' path doc coll)
-------------------------------------------------------------------------------
loadString conn str doc coll =
withTransaction conn $ (\conn' -> sednaLoadData conn' (pack str) doc coll)