module GHCJS.DOM.JSFFI.SQLTransaction (
module Generated
, js_executeSql
, executeSql'
, executeSql
, executeSql_
) where
import GHC.Base (IO(..))
import GHC.Prim (RealWorld, State#, ByteArray#)
import Control.Monad (void)
import Control.Monad.IO.Class (MonadIO(..))
import GHCJS.Prim (JSVal(..))
import GHCJS.Types (JSString)
import GHCJS.DOM.Types
import GHCJS.DOM.JSFFI.SQLError (throwSQLException)
import GHCJS.DOM.JSFFI.Generated.SQLTransaction as Generated hiding (js_executeSql, executeSql)
foreign import javascript interruptible
"$1[\"executeSql\"]($2, $3, function(tx, rs) { $c(true, rs); }, function(tx, e) { $c(false, e); });"
js_executeSql :: SQLTransaction -> JSString -> Nullable ObjectArray -> State# RealWorld -> (# State# RealWorld, Bool, ByteArray# #)
executeSql' :: (MonadIO m, ToJSString sqlStatement, IsObjectArray arguments) =>
SQLTransaction -> sqlStatement -> Maybe arguments -> m (Either SQLError SQLResultSet)
executeSql' self sqlStatement arguments = liftIO $ IO $ \s# ->
case js_executeSql self (toJSString sqlStatement) (maybeToNullable . fmap toObjectArray $ arguments) s# of
(# s2#, False, error #) -> (# s2#, Left (SQLError (JSVal error)) #)
(# s2#, True, rs #) -> (# s2#, Right (SQLResultSet (JSVal rs )) #)
executeSql :: (MonadIO m, ToJSString sqlStatement, IsObjectArray arguments) =>
SQLTransaction -> sqlStatement -> Maybe arguments -> m SQLResultSet
executeSql self sqlStatement arguments = executeSql' self sqlStatement arguments >>= either throwSQLException return
executeSql_ :: (MonadIO m, ToJSString sqlStatement, IsObjectArray arguments) =>
SQLTransaction -> sqlStatement -> Maybe arguments -> m ()
executeSql_ self sqlStatement arguments = void $ executeSql self sqlStatement arguments