diff Framework/Plugins/OrthancCppDatabasePlugin.h @ 75:52c70007bb87 db-changes

new extension implemented for PostgreSQL: SetResourcesContent
author Sebastien Jodogne <s.jodogne@gmail.com>
date Sat, 05 Jan 2019 11:41:15 +0100
parents a4e440e65c68
children a1c6238b26f8
line wrap: on
line diff
--- a/Framework/Plugins/OrthancCppDatabasePlugin.h	Fri Jan 04 17:24:30 2019 +0100
+++ b/Framework/Plugins/OrthancCppDatabasePlugin.h	Sat Jan 05 11:41:15 2019 +0100
@@ -510,6 +510,17 @@
       throw std::runtime_error("Not implemented");
     }
 #endif
+
+
+#if ORTHANC_PLUGINS_HAS_DATABASE_OPTIMIZATIONS_1 == 1
+    virtual void SetResourcesContent(
+      uint32_t countIdentifierTags,
+      const OrthancPluginResourcesContentTags* identifierTags,
+      uint32_t countMainDicomTags,
+      const OrthancPluginResourcesContentTags* mainDicomTags,
+      uint32_t countMetadata,
+      const OrthancPluginResourcesContentMetadata* metadata) = 0;
+#endif
   };
 
 
@@ -1536,6 +1547,30 @@
     }
 #endif
 
+
+#if ORTHANC_PLUGINS_HAS_DATABASE_OPTIMIZATIONS_1 == 1
+    static OrthancPluginErrorCode SetResourcesContent(
+      void* payload,
+      uint32_t countIdentifierTags,
+      const OrthancPluginResourcesContentTags* identifierTags,
+      uint32_t countMainDicomTags,
+      const OrthancPluginResourcesContentTags* mainDicomTags,
+      uint32_t countMetadata,
+      const OrthancPluginResourcesContentMetadata* metadata)
+    {
+      IDatabaseBackend* backend = reinterpret_cast<IDatabaseBackend*>(payload);
+
+      try
+      {
+        backend->SetResourcesContent(countIdentifierTags, identifierTags,
+                                     countMainDicomTags, mainDicomTags,
+                                     countMetadata, metadata);
+        return OrthancPluginErrorCode_Success;
+      }
+      ORTHANC_PLUGINS_DATABASE_CATCH      
+    }
+#endif    
+
     
   public:
     /**
@@ -1617,11 +1652,13 @@
 #endif
 
 #if ORTHANC_PLUGINS_HAS_DATABASE_OPTIMIZATIONS_1 == 1
-      extensions.lookupResources = LookupResources;   // New in Orthanc 1.5.2 (fast lookup)
+      // Optimizations brought by Orthanc 1.5.2
+      extensions.lookupResources = LookupResources;          // Fast lookup
+      extensions.setResourcesContent = SetResourcesContent;  // Fast setting tags/metadata
 
       if (backend.HasCreateInstance())
       {
-        extensions.createInstance = CreateInstance;   // New in Orthanc 1.5.2 (fast create)
+        extensions.createInstance = CreateInstance;          // Fast creation of resources
       }
       
       performanceWarning = false;