packages feed

hocilib-0.0.0: src/Database/Ocilib/Transaction.hs

{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TemplateHaskell   #-}
{-# LANGUAGE QuasiQuotes       #-}

-- |
-- Module:      Database.Ocilib.Transaction
-- Copyright:   (c) 2016 Thierry Bourrillon
--              (c) 2016 FPInsight, Eurl.
-- License:     BSD3
-- Maintainer:  Thierry Bourrillon <thierry.bourrillon@fpinsight.com>
-- Stability:   experimental
-- Portability: portable
--
--

module Database.Ocilib.Transaction where

import           Data.Monoid ((<>))
-- import           Foreign.C.Types
-- import           Foreign.C.String
import           Foreign.Marshal.Utils
import           Foreign.Ptr
import qualified Language.C.Inline as C
import           Database.Ocilib.Oci
-- import           Database.Ocilib.Enums

C.context (C.baseCtx <> C.funCtx <> ociCtx)

C.include "<ocilib.h>"

-- | Commit current pending changes.
ociCommit :: Ptr OCI_Connection -> IO Bool
ociCommit c = fmap toBool [C.exp| int { OCI_Commit($(OCI_Connection *c)) }|]

-- | Cancel current pending changes.
ociRollback :: Ptr OCI_Connection -> IO Bool
ociRollback c = fmap toBool [C.exp| int { OCI_Rollback($(OCI_Connection *c)) } |]

-- | Enable / disable auto commit mode.
ociSetAutoCommit :: Ptr OCI_Connection -> Bool -> IO Bool
ociSetAutoCommit c b = do
    let b' = fromBool b
    fmap toBool [C.exp| int { OCI_SetAutoCommit($(OCI_Connection *c), $(int b'))} |]

-- | Get current auto commit mode status.
ociGetAutoCommit :: Ptr OCI_Connection -> IO Bool
ociGetAutoCommit c = fmap toBool [C.exp| int { OCI_GetAutoCommit($(OCI_Connection *c)) } |]

{-
-- | Create a new global transaction or a serializable/read-only local transaction.
-- OCI_Transaction *OCI_TransactionCreate (OCI_Connection *con, unsigned int timeout, unsigned int mode, OCI_XID *pxid)

-- | Free current transaction.
-- boolean OCI_TransactionFree (OCI_Transaction *trans)

-- | Start global transaction.
-- boolean OCI_TransactionStart (OCI_Transaction *trans)

-- | Stop current global transaction.
-- boolean OCI_TransactionStop (OCI_Transaction *trans)

-- | Resume a stopped global transaction.
-- boolean OCI_TransactionResume (OCI_Transaction *trans)

-- | Prepare a global transaction validation. More...
-- boolean OCI_TransactionPrepare (OCI_Transaction *trans)

-- | Cancel the prepared global transaction validation.
-- boolean OCI_TransactionForget (OCI_Transaction *trans)

-- | Return global transaction mode.
-- unsigned int OCI_TransactionGetMode (OCI_Transaction *trans)

-- | Return global transaction Timeout.
-- unsigned int OCI_TransactionGetTimeout (OCI_Transaction *trans)

-}