diff OrthancServer/Sources/Database/FindResponse.cpp @ 5565:def06a42e5ef find-refactoring

Updated FindRequest & FindResponse definitions
author Alain Mazy <am@orthanc.team>
date Tue, 23 Apr 2024 13:07:38 +0200
parents 12d8a1a266e9
children b0b5546f1b9f
line wrap: on
line diff
--- a/OrthancServer/Sources/Database/FindResponse.cpp	Mon Apr 15 16:13:24 2024 +0200
+++ b/OrthancServer/Sources/Database/FindResponse.cpp	Tue Apr 23 13:07:38 2024 +0200
@@ -114,8 +114,10 @@
   }
 
 
-  FindResponse::Item::Item(ResourceType level,
+  FindResponse::Item::Item(FindRequest::ResponseContent responseContent,
+                           ResourceType level,
                            DicomMap* dicomMap /* takes ownership */) :
+    responseContent_(responseContent),
     level_(level),
     dicomMap_(dicomMap)
   {
@@ -131,7 +133,8 @@
 
 
   void FindResponse::Item::AddMetadata(MetadataType metadata,
-                                       const std::string& value)
+                                       const std::string& value,
+                                       int64_t revision)
   {
     if (metadata_.find(metadata) != metadata_.end())
     {
@@ -139,15 +142,16 @@
     }
     else
     {
-      metadata_[metadata] = value;
+      metadata_[metadata] = StringWithRevision(value, revision);
     }
   }
 
 
   bool FindResponse::Item::LookupMetadata(std::string& value,
+                                          int64_t revision,
                                           MetadataType metadata) const
   {
-    std::map<MetadataType, std::string>::const_iterator found = metadata_.find(metadata);
+    std::map<MetadataType, StringWithRevision>::const_iterator found = metadata_.find(metadata);
 
     if (found == metadata_.end())
     {
@@ -155,17 +159,18 @@
     }
     else
     {
-      value = found->second;
+      value = found->second.GetValue();
+      revision = found->second.GetRevision();
       return true;
     }
   }
 
 
-  void FindResponse::Item::ListMetadata(std::set<MetadataType> target) const
+  void FindResponse::Item::ListMetadata(std::set<MetadataType>& target) const
   {
     target.clear();
 
-    for (std::map<MetadataType, std::string>::const_iterator it = metadata_.begin(); it != metadata_.end(); ++it)
+    for (std::map<MetadataType, StringWithRevision>::const_iterator it = metadata_.begin(); it != metadata_.end(); ++it)
     {
       target.insert(it->first);
     }