diff OrthancServer/Sources/Database/SQLiteDatabaseWrapper.cpp @ 5588:1b0fc6685f57 find-refactoring

add index of resources into FindResponse
author Sebastien Jodogne <s.jodogne@gmail.com>
date Fri, 03 May 2024 17:20:27 +0200
parents fc3914c07dd3
children b51ee994cd6f
line wrap: on
line diff
--- a/OrthancServer/Sources/Database/SQLiteDatabaseWrapper.cpp	Fri May 03 17:06:42 2024 +0200
+++ b/OrthancServer/Sources/Database/SQLiteDatabaseWrapper.cpp	Fri May 03 17:20:27 2024 +0200
@@ -1178,9 +1178,8 @@
         }
         else
         {
-          std::map<std::string, FindResponse::Item*> items;  // cache to the response items
-
-          {// first create a temporary table that with the filtered and ordered results
+          {
+            // first create a temporary table that with the filtered and ordered results
             sqlLookup = "CREATE TEMPORARY TABLE FilteredResourcesIds AS " + sqlLookup;
 
             SQLite::Statement statement(db_, SQLITE_FROM_HERE_DYNAMIC(sqlLookup), sqlLookup);
@@ -1196,10 +1195,7 @@
             while (statement.Step())
             {
               const std::string resourceId = statement.ColumnString(0);
-
-              FindResponse::Item* item = new FindResponse::Item(request.GetLevel(), resourceId);
-              items[resourceId] = item;
-              response.Add(item);
+              response.Add(new FindResponse::Item(request.GetLevel(), resourceId));
             }
           }
 
@@ -1215,10 +1211,11 @@
             while (statement.Step())
             {
               const std::string& resourceId = statement.ColumnString(0);
-              items[resourceId]->AddStringDicomTag(request.GetLevel(),
-                                                   statement.ColumnInt(1),
-                                                   statement.ColumnInt(2),
-                                                   statement.ColumnString(3));
+              assert(response.HasItem(resourceId));
+              response.GetItem(resourceId).AddStringDicomTag(request.GetLevel(),
+                                                             statement.ColumnInt(1),
+                                                             statement.ColumnInt(2),
+                                                             statement.ColumnString(3));
             }
           }
 
@@ -1234,7 +1231,8 @@
             while (statement.Step())
             {
               const std::string& resourceId = statement.ColumnString(0);
-              items[resourceId]->AddChildIdentifier(GetChildResourceType(request.GetLevel()), statement.ColumnString(1));
+              assert(response.HasItem(resourceId));
+              response.GetItem(resourceId).AddChildIdentifier(GetChildResourceType(request.GetLevel()), statement.ColumnString(1));
             }
           }
 
@@ -1250,7 +1248,8 @@
             {
               const std::string& resourceId = statement.ColumnString(0);
               const std::string& parentId = statement.ColumnString(1);
-              items[resourceId]->SetParentIdentifier(parentId);
+              assert(response.HasItem(resourceId));
+              response.GetItem(resourceId).SetParentIdentifier(parentId);
             }
           }
 
@@ -1264,8 +1263,9 @@
             while (statement.Step())
             {
               const std::string& resourceId = statement.ColumnString(0);
-              items[resourceId]->AddMetadata(static_cast<MetadataType>(statement.ColumnInt(1)),
-                                             statement.ColumnString(2));
+              assert(response.HasItem(resourceId));
+              response.GetItem(resourceId).AddMetadata(static_cast<MetadataType>(statement.ColumnInt(1)),
+                                                       statement.ColumnString(2));
             }
           }
 
@@ -1279,7 +1279,8 @@
             while (statement.Step())
             {
               const std::string& resourceId = statement.ColumnString(0);
-              items[resourceId]->AddLabel(statement.ColumnString(1));
+              assert(response.HasItem(resourceId));
+              response.GetItem(resourceId).AddLabel(statement.ColumnString(1));
             }
           }
 
@@ -1301,7 +1302,9 @@
                                              static_cast<CompressionType>(statement.ColumnInt(4)),
                                              statement.ColumnInt64(5),
                                              statement.ColumnString(7));
-              items[resourceId]->AddAttachment(attachment);
+
+              assert(response.HasItem(resourceId));
+              response.GetItem(resourceId).AddAttachment(attachment);
             };
           }