diff OrthancServer/Sources/Database/StatelessDatabaseOperations.h @ 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 03501a258d9e
children dceed5e3d6a9
line wrap: on
line diff
--- a/OrthancServer/Sources/Database/StatelessDatabaseOperations.h	Wed Dec 06 14:20:33 2023 +0100
+++ b/OrthancServer/Sources/Database/StatelessDatabaseOperations.h	Thu Dec 07 12:04:11 2023 +0100
@@ -176,17 +176,17 @@
     {
     private:
       ITransactionContext&  context_;
-      bool                  hasLabelsSupport_;
-      
+      const IDatabaseWrapper::Capabilities& dbCapabilities_;
+
     protected:
       IDatabaseWrapper::ITransaction&  transaction_;
       
     public:
       explicit ReadOnlyTransaction(IDatabaseWrapper::ITransaction& transaction,
                                    ITransactionContext& context,
-                                   bool hasLabelsSupport) :
+                                   const IDatabaseWrapper::Capabilities& dbCapabilities) :
         context_(context),
-        hasLabelsSupport_(hasLabelsSupport),
+        dbCapabilities_(dbCapabilities),
         transaction_(transaction)
       {
       }
@@ -196,9 +196,9 @@
         return context_;
       }
 
-      bool HasLabelsSupport() const
+      const IDatabaseWrapper::Capabilities& GetDatabaseCapabilities() const
       {
-        return hasLabelsSupport_;
+        return dbCapabilities_;
       }
 
       /**
@@ -392,8 +392,8 @@
     public:
       ReadWriteTransaction(IDatabaseWrapper::ITransaction& transaction,
                            ITransactionContext& context,
-                           bool hasLabelsSupport) :
-        ReadOnlyTransaction(transaction, context, hasLabelsSupport)
+                           const IDatabaseWrapper::Capabilities& dbCapabilities) :
+        ReadOnlyTransaction(transaction, context, dbCapabilities)
       {
       }
 
@@ -463,6 +463,13 @@
         transaction_.SetGlobalProperty(property, shared, value);
       }
 
+      int64_t IncrementGlobalProperty(GlobalProperty sequence,
+                                      bool shared,
+                                      int64_t increment)
+      {
+        return transaction_.IncrementGlobalProperty(sequence, shared, increment);
+      }
+
       void SetMetadata(int64_t id,
                        MetadataType type,
                        const std::string& value,
@@ -540,7 +547,6 @@
 
     IDatabaseWrapper&                            db_;
     boost::shared_ptr<MainDicomTagsRegistry>     mainDicomTagsRegistry_;  // "shared_ptr" because of PImpl
-    bool                                         hasFlushToDisk_;
 
     // Mutex to protect the configuration options
     boost::shared_mutex                          mutex_;
@@ -575,12 +581,13 @@
       return db_.GetDatabaseVersion();
     }
 
+    const IDatabaseWrapper::Capabilities& GetDatabaseCapabilities() const
+    {
+      return db_.GetDatabaseCapabilities();
+    }
+
     void FlushToDisk();
 
-    bool HasFlushToDisk() const
-    {
-      return hasFlushToDisk_;
-    }
 
     void Apply(IReadOnlyOperations& operations);