diff Framework/Plugins/OrthancCppDatabasePlugin.h @ 85:1012fe77241c db-changes

new extension implemented for PostgreSQL and SQLite: GetLastChangeIndex
author Sebastien Jodogne <s.jodogne@gmail.com>
date Thu, 10 Jan 2019 18:04:12 +0100
parents 2ee166f77501
children eb08ec14fb04
line wrap: on
line diff
--- a/Framework/Plugins/OrthancCppDatabasePlugin.h	Thu Jan 10 13:33:33 2019 +0100
+++ b/Framework/Plugins/OrthancCppDatabasePlugin.h	Thu Jan 10 18:04:12 2019 +0100
@@ -492,7 +492,10 @@
 
     virtual void ClearMainDicomTags(int64_t internalId) = 0;
 
-    virtual bool HasCreateInstance() const = 0;
+    virtual bool HasCreateInstance() const
+    {
+      return false;
+    }
 
 #if ORTHANC_PLUGINS_HAS_DATABASE_CONSTRAINT == 1
     virtual void LookupResources(const std::vector<Orthanc::DatabaseConstraint>& lookup,
@@ -524,11 +527,11 @@
 #endif
 
     
-#if ORTHANC_PLUGINS_HAS_DATABASE_CONSTRAINT == 1
     virtual void GetChildrenMetadata(std::list<std::string>& target,
                                      int64_t resourceId,
                                      int32_t metadata) = 0;
-#endif
+
+    virtual int64_t GetLastChangeIndex() = 0;
   };
 
 
@@ -1585,8 +1588,6 @@
 #endif    
 
     
-
-#if ORTHANC_PLUGINS_HAS_DATABASE_CONSTRAINT == 1
     // New primitive since Orthanc 1.5.2
     static OrthancPluginErrorCode GetChildrenMetadata(OrthancPluginDatabaseContext* context,
                                                       void* payload,
@@ -1613,8 +1614,23 @@
       }
       ORTHANC_PLUGINS_DATABASE_CATCH      
     }
-#endif
+
+
+    // New primitive since Orthanc 1.5.2
+    static OrthancPluginErrorCode GetLastChangeIndex(int64_t* result,
+                                                     void* payload)
+    {
+      IDatabaseBackend* backend = reinterpret_cast<IDatabaseBackend*>(payload);
+      backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None);
 
+      try
+      {
+        *result = backend->GetLastChangeIndex();
+        return OrthancPluginErrorCode_Success;
+      }
+      ORTHANC_PLUGINS_DATABASE_CATCH      
+    }
+   
 
   public:
     /**
@@ -1700,6 +1716,7 @@
       extensions.lookupResources = LookupResources;          // Fast lookup
       extensions.setResourcesContent = SetResourcesContent;  // Fast setting tags/metadata
       extensions.getChildrenMetadata = GetChildrenMetadata;
+      extensions.getLastChangeIndex = GetLastChangeIndex;
 
       if (backend.HasCreateInstance())
       {