diff Framework/PostgreSQL/PostgreSQLDatabase.cpp @ 215:b40b30075c51

added TransactionType_Implicit
author Sebastien Jodogne <s.jodogne@gmail.com>
date Fri, 26 Mar 2021 17:32:29 +0100
parents ab96698c73a3
children fbb52129158a
line wrap: on
line diff
--- a/Framework/PostgreSQL/PostgreSQLDatabase.cpp	Thu Mar 25 13:56:26 2021 +0100
+++ b/Framework/PostgreSQL/PostgreSQLDatabase.cpp	Fri Mar 26 17:32:29 2021 +0100
@@ -232,9 +232,6 @@
   {
     class PostgreSQLImplicitTransaction : public ImplicitTransaction
     {
-    private:
-      PostgreSQLDatabase&  db_;
-
     protected:
       virtual IResult* ExecuteInternal(IPrecompiledStatement& statement,
                                        const Dictionary& parameters)
@@ -247,25 +244,26 @@
       {
         dynamic_cast<PostgreSQLStatement&>(statement).ExecuteWithoutResult(*this, parameters);
       }
-      
-    public:
-      explicit PostgreSQLImplicitTransaction(PostgreSQLDatabase&  db) :
-        db_(db)
-      {
-      }
     };
   }
   
   
-  ITransaction* PostgreSQLDatabase::CreateTransaction(bool isImplicit)
+  ITransaction* PostgreSQLDatabase::CreateTransaction(TransactionType type)
   {
-    if (isImplicit)
+    switch (type)
     {
-      return new PostgreSQLImplicitTransaction(*this);
-    }
-    else
-    {
-      return new PostgreSQLTransaction(*this);
+      case TransactionType_Implicit:
+        return new PostgreSQLImplicitTransaction;
+
+      case TransactionType_ReadOnly:
+        // TODO => READ-ONLY
+        return new PostgreSQLTransaction(*this);
+
+      case TransactionType_ReadWrite:
+        return new PostgreSQLTransaction(*this);
+
+      default:
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
     }
   }