diff Framework/MySQL/MySQLDatabase.cpp @ 215:b40b30075c51

added TransactionType_Implicit
author Sebastien Jodogne <s.jodogne@gmail.com>
date Fri, 26 Mar 2021 17:32:29 +0100
parents 3236894320d6
children ee5858d438dc
line wrap: on
line diff
--- a/Framework/MySQL/MySQLDatabase.cpp	Thu Mar 25 13:56:26 2021 +0100
+++ b/Framework/MySQL/MySQLDatabase.cpp	Fri Mar 26 17:32:29 2021 +0100
@@ -518,9 +518,6 @@
   {
     class MySQLImplicitTransaction : public ImplicitTransaction
     {
-    private:
-      MySQLDatabase&  db_;
-
     protected:
       virtual IResult* ExecuteInternal(IPrecompiledStatement& statement,
                                        const Dictionary& parameters)
@@ -533,30 +530,31 @@
       {
         dynamic_cast<MySQLStatement&>(statement).ExecuteWithoutResult(*this, parameters);
       }
-      
-    public:
-      explicit MySQLImplicitTransaction(MySQLDatabase&  db) :
-        db_(db)
-      {
-      }
     };
   }
   
 
-  ITransaction* MySQLDatabase::CreateTransaction(bool isImplicit)
+  ITransaction* MySQLDatabase::CreateTransaction(TransactionType type)
   {
     if (mysql_ == NULL)
     {
       throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
     }
 
-    if (isImplicit)
+    switch (type)
     {
-      return new MySQLImplicitTransaction(*this);
-    }
-    else
-    {
-      return new MySQLTransaction(*this);
+      case TransactionType_Implicit:
+        return new MySQLImplicitTransaction;
+
+      case TransactionType_ReadOnly:
+        // TODO => READ-ONLY
+        return new MySQLTransaction(*this);
+
+      case TransactionType_ReadWrite:
+        return new MySQLTransaction(*this);
+
+      default:
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
     }
   }