diff Framework/SQLite/SQLiteDatabase.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 35598014f140
line wrap: on
line diff
--- a/Framework/SQLite/SQLiteDatabase.cpp	Thu Mar 25 13:56:26 2021 +0100
+++ b/Framework/SQLite/SQLiteDatabase.cpp	Fri Mar 26 17:32:29 2021 +0100
@@ -48,9 +48,6 @@
   {
     class SQLiteImplicitTransaction : public ImplicitTransaction
     {
-    private:
-      SQLiteDatabase&  db_;
-
     protected:
       virtual IResult* ExecuteInternal(IPrecompiledStatement& statement,
                                        const Dictionary& parameters) ORTHANC_OVERRIDE
@@ -63,24 +60,22 @@
       {
         dynamic_cast<SQLiteStatement&>(statement).ExecuteWithoutResult(*this, parameters);
       }
-      
-    public:
-      explicit SQLiteImplicitTransaction(SQLiteDatabase&  db) :
-        db_(db)
-      {
-      }
     };
   }
   
-  ITransaction* SQLiteDatabase::CreateTransaction(bool isImplicit)
+  ITransaction* SQLiteDatabase::CreateTransaction(TransactionType type)
   {
-    if (isImplicit)
+    switch (type)
     {
-      return new SQLiteImplicitTransaction(*this);
-    }
-    else
-    {
-      return new SQLiteTransaction(*this);
+      case TransactionType_Implicit:
+        return new SQLiteImplicitTransaction;
+
+      case TransactionType_ReadOnly:
+      case TransactionType_ReadWrite:
+        return new SQLiteTransaction(*this);
+
+      default:
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
     }
   }
 }