diff Framework/Plugins/IndexBackend.cpp @ 76:a1c6238b26f8 db-changes

new extension implemented for PostgreSQL: GetChildrenMetadata
author Sebastien Jodogne <s.jodogne@gmail.com>
date Sat, 05 Jan 2019 15:51:25 +0100
parents 52c70007bb87
children 2ee166f77501
line wrap: on
line diff
--- a/Framework/Plugins/IndexBackend.cpp	Sat Jan 05 11:41:15 2019 +0100
+++ b/Framework/Plugins/IndexBackend.cpp	Sat Jan 05 15:51:25 2019 +0100
@@ -1860,4 +1860,28 @@
     ExecuteSetResourcesContentMetadata(GetManager(), countMetadata, metadata);
   }
 #endif
+
+
+#if ORTHANC_PLUGINS_HAS_DATABASE_OPTIMIZATIONS_1 == 1
+  // New primitive since Orthanc 1.5.2
+  void IndexBackend::GetChildrenMetadata(std::list<std::string>& target,
+                                         int64_t resourceId,
+                                         int32_t metadata)
+  {
+    DatabaseManager::CachedStatement statement(
+      STATEMENT_FROM_HERE, manager_,
+      "SELECT value FROM Metadata WHERE type=${metadata} AND "
+      "id IN (SELECT internalId FROM Resources WHERE parentId=${id})");
+      
+    statement.SetReadOnly(true);
+    statement.SetParameterType("id", ValueType_Integer64);
+    statement.SetParameterType("metadata", ValueType_Integer64);
+
+    Dictionary args;
+    args.SetIntegerValue("id", static_cast<int>(resourceId));
+    args.SetIntegerValue("metadata", static_cast<int>(metadata));
+
+    ReadListOfStrings(target, statement, args);
+  }
+#endif  
 }