changeset 5886:9b73ec6a07be find-refactoring

refactoring StatelessDatabaseOperations::ListAvailableAttachments()
author Sebastien Jodogne <s.jodogne@gmail.com>
date Fri, 29 Nov 2024 16:29:46 +0100
parents 207371ec031e
children 1625fa53a6a3
files OrthancServer/Sources/Database/FindResponse.cpp OrthancServer/Sources/Database/FindResponse.h OrthancServer/Sources/Database/StatelessDatabaseOperations.cpp
diffstat 3 files changed, 22 insertions(+), 22 deletions(-) [+]
line wrap: on
line diff
--- a/OrthancServer/Sources/Database/FindResponse.cpp	Fri Nov 29 10:54:20 2024 +0100
+++ b/OrthancServer/Sources/Database/FindResponse.cpp	Fri Nov 29 16:29:46 2024 +0100
@@ -528,6 +528,18 @@
   }
 
 
+  void FindResponse::Resource::ListAttachments(std::set<FileContentType>& target) const
+  {
+    target.clear();
+
+    for (std::map<FileContentType, FileInfo>::const_iterator
+           it = attachments_.begin(); it != attachments_.end(); ++it)
+    {
+      target.insert(it->first);
+    }
+  }
+
+
   void FindResponse::Resource::SetOneInstanceMetadataAndAttachments(const std::string& instancePublicId,
                                                                     const std::map<MetadataType, std::string>& metadata,
                                                                     const std::map<FileContentType, FileInfo>& attachments)
--- a/OrthancServer/Sources/Database/FindResponse.h	Fri Nov 29 10:54:20 2024 +0100
+++ b/OrthancServer/Sources/Database/FindResponse.h	Fri Nov 29 16:29:46 2024 +0100
@@ -362,6 +362,8 @@
         return attachments_;
       }
 
+      void ListAttachments(std::set<FileContentType>& target) const;
+
       void SetOneInstanceMetadataAndAttachments(const std::string& instancePublicId,
                                                 const std::map<MetadataType, std::string>& metadata,
                                                 const std::map<FileContentType, FileInfo>& attachments);
--- a/OrthancServer/Sources/Database/StatelessDatabaseOperations.cpp	Fri Nov 29 10:54:20 2024 +0100
+++ b/OrthancServer/Sources/Database/StatelessDatabaseOperations.cpp	Fri Nov 29 16:29:46 2024 +0100
@@ -949,6 +949,8 @@
   void StatelessDatabaseOperations::GetChildInstances(std::list<std::string>& result,
                                                       const std::string& publicId)
   {
+    // TODO-FIND
+
     class Operations : public ReadOnlyOperationsT2<std::list<std::string>&, const std::string&>
     {
     public:
@@ -1042,28 +1044,12 @@
                                                              const std::string& publicId,
                                                              ResourceType expectedType)
   {
-    class Operations : public ReadOnlyOperationsT3<std::set<FileContentType>&, const std::string&, ResourceType>
-    {
-    public:
-      virtual void ApplyTuple(ReadOnlyTransaction& transaction,
-                              const Tuple& tuple) ORTHANC_OVERRIDE
-      {
-        ResourceType type;
-        int64_t id;
-        if (!transaction.LookupResource(id, type, tuple.get<1>()) ||
-            tuple.get<2>() != type)
-        {
-          throw OrthancException(ErrorCode_UnknownResource);
-        }
-        else
-        {
-          transaction.ListAvailableAttachments(tuple.get<0>(), id);
-        }
-      }
-    };
-    
-    Operations operations;
-    operations.Apply(*this, target, publicId, expectedType);
+    FindRequest request(expectedType);
+    request.SetOrthancId(expectedType, publicId);
+    request.SetRetrieveAttachments(true);
+
+    FindResponse response;
+    ExecuteSingleResource(response, request).ListAttachments(target);
   }