diff OrthancServer/Sources/Database/SQLiteDatabaseWrapper.cpp @ 5455:176bc05f85f4 pg-transactions

DB: new Capabilities class to manage future new methods from DB plugins + Added IncrementGlobalProperty
author Alain Mazy <am@osimis.io>
date Thu, 07 Dec 2023 12:04:11 +0100
parents 261ce0ed85e6
children dceed5e3d6a9
line wrap: on
line diff
--- a/OrthancServer/Sources/Database/SQLiteDatabaseWrapper.cpp	Wed Dec 06 14:20:33 2023 +0100
+++ b/OrthancServer/Sources/Database/SQLiteDatabaseWrapper.cpp	Thu Dec 07 12:04:11 2023 +0100
@@ -300,19 +300,27 @@
     boost::mutex::scoped_lock  lock_;
     IDatabaseListener&         listener_;
     SignalRemainingAncestor&   signalRemainingAncestor_;
+    const IDatabaseWrapper::Capabilities& dbCapabilities_;
 
   public:
     TransactionBase(boost::mutex& mutex,
                     SQLite::Connection& db,
                     IDatabaseListener& listener,
-                    SignalRemainingAncestor& signalRemainingAncestor) :
+                    SignalRemainingAncestor& signalRemainingAncestor,
+                    const IDatabaseWrapper::Capabilities& dbCapabilities) :
       UnitTestsTransaction(db),
       lock_(mutex),
       listener_(listener),
-      signalRemainingAncestor_(signalRemainingAncestor)
+      signalRemainingAncestor_(signalRemainingAncestor),
+      dbCapabilities_(dbCapabilities)
     {
     }
 
+    virtual const IDatabaseWrapper::Capabilities& GetDatabaseCapabilities() const ORTHANC_OVERRIDE
+    {
+      return dbCapabilities_;
+    }
+
     IDatabaseListener& GetListener() const
     {
       return listener_;
@@ -1137,6 +1145,7 @@
         target.insert(s.ColumnString(0));
       }
     }
+
   };
 
 
@@ -1234,7 +1243,7 @@
   public:
     ReadWriteTransaction(SQLiteDatabaseWrapper& that,
                          IDatabaseListener& listener) :
-      TransactionBase(that.mutex_, that.db_, listener, *that.signalRemainingAncestor_),
+      TransactionBase(that.mutex_, that.db_, listener, *that.signalRemainingAncestor_, that.GetDatabaseCapabilities()),
       that_(that),
       transaction_(new SQLite::Transaction(that_.db_))
     {
@@ -1288,7 +1297,7 @@
   public:
     ReadOnlyTransaction(SQLiteDatabaseWrapper& that,
                         IDatabaseListener& listener) :
-      TransactionBase(that.mutex_, that.db_, listener, *that.signalRemainingAncestor_),
+      TransactionBase(that.mutex_, that.db_, listener, *that.signalRemainingAncestor_, that.GetDatabaseCapabilities()),
       that_(that)
     {
       if (that_.activeTransaction_ != NULL)
@@ -1322,7 +1331,8 @@
   SQLiteDatabaseWrapper::SQLiteDatabaseWrapper(const std::string& path) : 
     activeTransaction_(NULL), 
     signalRemainingAncestor_(NULL),
-    version_(0)
+    version_(0),
+    dbCapabilities_(true, false /* TODO: implement revisions in SQLite */, true, false)
   {
     db_.Open(path);
   }
@@ -1331,7 +1341,8 @@
   SQLiteDatabaseWrapper::SQLiteDatabaseWrapper() : 
     activeTransaction_(NULL), 
     signalRemainingAncestor_(NULL),
-    version_(0)
+    version_(0),
+    dbCapabilities_(true, false /* TODO: implement revisions in SQLite */, true, false)
   {
     db_.OpenInMemory();
   }