diff Framework/Plugins/IndexBackend.cpp @ 69:19764fc60ade db-changes

compatibility with Orthanc SDDK 0.9.5
author Sebastien Jodogne <s.jodogne@gmail.com>
date Thu, 03 Jan 2019 10:07:27 +0100
parents 714c5d2bee76
children e6c13ddd26d9
line wrap: on
line diff
--- a/Framework/Plugins/IndexBackend.cpp	Mon Dec 24 13:36:44 2018 +0100
+++ b/Framework/Plugins/IndexBackend.cpp	Thu Jan 03 10:07:27 2019 +0100
@@ -29,6 +29,7 @@
 #include <Core/Logging.h>
 #include <Core/OrthancException.h>
 #include <OrthancServer/ServerEnumerations.h>
+#include <OrthancServer/Search/ISqlLookupFormatter.h>
 
 
 namespace OrthancDatabases
@@ -1579,4 +1580,55 @@
 
     ReadListOfStrings(childrenPublicIds, statement, args);
   }
+
+
+#if ORTHANC_PLUGINS_HAS_DATABASE_CONSTRAINT == 1
+  class IndexBackend::LookupFormatter : public Orthanc::ISqlLookupFormatter
+  {
+  private:
+    Dialect  dialect_;
+
+  public:
+    LookupFormatter(Dialect  dialect) :
+      dialect_(dialect)
+    {
+    }
+
+    virtual std::string GenerateParameter(const std::string& value)
+    {
+      switch (dialect_)
+      {
+        case Dialect_MySQL:
+          break;
+        
+        case Dialect_PostgreSQL:
+          break;
+
+        case Dialect_SQLite:
+          break;
+
+        default:
+          throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
+      }
+    }
+  };
+#endif
+
+  
+#if ORTHANC_PLUGINS_HAS_DATABASE_CONSTRAINT == 1
+  // New primitive since Orthanc 1.5.2
+  void IndexBackend::LookupResources(const std::vector<Orthanc::DatabaseConstraint>& lookup,
+                                     OrthancPluginResourceType queryLevel,
+                                     uint32_t limit,
+                                     bool requestSomeInstance)
+  {
+    std::string sql;
+
+    {
+      LookupFormatter formatter(manager_.GetDialect());
+      Orthanc::ISqlLookupFormatter::Apply(sql, formatter, lookup,
+                                          Orthanc::Plugins::Convert(queryLevel), limit);
+    }
+  }
+#endif
 }