changeset 585:65e39e76c2b6 find-refactoring

fix handling of attachments revision
author Alain Mazy <am@orthanc.team>
date Mon, 04 Nov 2024 18:38:32 +0100
parents 47b14499455e
children 3b1070dcab2f
files Framework/Plugins/IndexBackend.cpp
diffstat 1 files changed, 79 insertions(+), 46 deletions(-) [+]
line wrap: on
line diff
--- a/Framework/Plugins/IndexBackend.cpp	Mon Nov 04 17:51:22 2024 +0100
+++ b/Framework/Plugins/IndexBackend.cpp	Mon Nov 04 18:38:32 2024 +0100
@@ -3198,8 +3198,9 @@
 #define C5_STRING_3 5
 #define C6_INT_1 6
 #define C7_INT_2 7
-#define C8_BIG_INT_1 8
-#define C9_BIG_INT_2 9
+#define C8_INT_3 8
+#define C9_BIG_INT_1 9
+#define C10_BIG_INT_2 10
 
 #define QUERY_LOOKUP 1
 #define QUERY_MAIN_DICOM_TAGS 2
@@ -3315,8 +3316,9 @@
           "  " + formatter.FormatNull("TEXT") + " AS c5_string3, "
           "  " + formatter.FormatNull("INT") + " AS c6_int1, "
           "  " + formatter.FormatNull("INT") + " AS c7_int2, "
-          "  " + formatter.FormatNull("BIGINT") + " AS c8_big_int1, "
-          "  " + formatter.FormatNull("BIGINT") + " AS c9_big_int2 "
+          "  " + formatter.FormatNull("INT") + " AS c8_int3, "
+          "  " + formatter.FormatNull("BIGINT") + " AS c9_big_int1, "
+          "  " + formatter.FormatNull("BIGINT") + " AS c10_big_int2 "
           "  FROM Lookup ";
 
     // need MainDicomTags from resource ?
@@ -3331,8 +3333,9 @@
              "  " + formatter.FormatNull("TEXT") + " AS c5_string3, "
              "  tagGroup AS c6_int1, "
              "  tagElement AS c7_int2, "
-             "  " + formatter.FormatNull("BIGINT") + " AS c8_big_int1, "
-             "  " + formatter.FormatNull("BIGINT") + " AS c9_big_int2 "
+             "  " + formatter.FormatNull("INT") + " AS c8_int3, "
+             "  " + formatter.FormatNull("BIGINT") + " AS c9_big_int1, "
+             "  " + formatter.FormatNull("BIGINT") + " AS c10_big_int2 "
              "FROM Lookup "
              "INNER JOIN MainDicomTags ON MainDicomTags.id = Lookup.internalId ";
     }
@@ -3349,8 +3352,9 @@
              "  " + formatter.FormatNull("TEXT") + " AS c5_string3, "
              "  type AS c6_int1, "
              "  " + formatter.FormatNull("INT") + " AS c7_int2, "
-             "  " + formatter.FormatNull("BIGINT") + " AS c8_big_int1, "
-             "  " + formatter.FormatNull("BIGINT") + " AS c9_big_int2 "
+            "  " + formatter.FormatNull("INT") + " AS c8_int3, "
+             "  " + formatter.FormatNull("BIGINT") + " AS c9_big_int1, "
+             "  " + formatter.FormatNull("BIGINT") + " AS c10_big_int2 "
              "FROM Lookup "
              "INNER JOIN Metadata ON Metadata.id = Lookup.internalId ";
     }
@@ -3358,6 +3362,16 @@
     // need resource attachments ?
     if (request.retrieve_attachments())
     {
+      std::string revision;
+      if (HasRevisionsSupport())
+      {
+        revision = "revision";
+      }
+      else
+      {
+        revision = "0";
+      }
+
       sql += "UNION ALL SELECT "
              "  " TOSTRING(QUERY_ATTACHMENTS) " AS c0_queryId, "
              "  Lookup.internalId AS c1_internalId, "
@@ -3367,8 +3381,9 @@
              "  compressedHash AS c5_string3, "
              "  fileType AS c6_int1, "
              "  compressionType AS c7_int2, "
-             "  compressedSize AS c8_big_int1, "
-             "  uncompressedSize AS c9_big_int2 "
+             "  " + revision + " AS c8_int3, "
+             "  compressedSize AS c9_big_int1, "
+             "  uncompressedSize AS c10_big_int2 "
              "FROM Lookup "
              "INNER JOIN AttachedFiles ON AttachedFiles.id = Lookup.internalId ";
     }
@@ -3385,8 +3400,9 @@
              "  " + formatter.FormatNull("TEXT") + " AS c5_string3, "
              "  " + formatter.FormatNull("INT") + " AS c6_int1, "
              "  " + formatter.FormatNull("INT") + " AS c7_int2, "
-             "  " + formatter.FormatNull("BIGINT") + " AS c8_big_int1, "
-             "  " + formatter.FormatNull("BIGINT") + " AS c9_big_int2 "
+             "  " + formatter.FormatNull("INT") + " AS c8_int3, "
+             "  " + formatter.FormatNull("BIGINT") + " AS c9_big_int1, "
+             "  " + formatter.FormatNull("BIGINT") + " AS c10_big_int2 "
              "FROM Lookup "
              "INNER JOIN Labels ON Labels.id = Lookup.internalId ";
     }
@@ -3422,8 +3438,9 @@
                "  " + formatter.FormatNull("TEXT") + " AS c5_string3, "
                "  tagGroup AS c6_int1, "
                "  tagElement AS c7_int2, "
-               "  " + formatter.FormatNull("BIGINT") + " AS c8_big_int1, "
-               "  " + formatter.FormatNull("BIGINT") + " AS c9_big_int2 "
+               "  " + formatter.FormatNull("INT") + " AS c8_int3, "
+               "  " + formatter.FormatNull("BIGINT") + " AS c9_big_int1, "
+               "  " + formatter.FormatNull("BIGINT") + " AS c10_big_int2 "
                "FROM Lookup "
                "INNER JOIN Resources currentLevel ON Lookup.internalId = currentLevel.internalId "
                "INNER JOIN MainDicomTags ON MainDicomTags.id = currentLevel.parentId ";
@@ -3440,8 +3457,9 @@
                "  " + formatter.FormatNull("TEXT") + " AS c5_string3, "
                "  type AS c6_int1, "
                "  " + formatter.FormatNull("INT") + " AS c7_int2, "
-               "  " + formatter.FormatNull("BIGINT") + " AS c8_big_int1, "
-               "  " + formatter.FormatNull("BIGINT") + " AS c9_big_int2 "
+               "  " + formatter.FormatNull("INT") + " AS c8_int3, "
+               "  " + formatter.FormatNull("BIGINT") + " AS c9_big_int1, "
+               "  " + formatter.FormatNull("BIGINT") + " AS c10_big_int2 "
                "FROM Lookup "
                "INNER JOIN Resources currentLevel ON Lookup.internalId = currentLevel.internalId "
                "INNER JOIN Metadata ON Metadata.id = currentLevel.parentId ";
@@ -3475,8 +3493,9 @@
                "  " + formatter.FormatNull("TEXT") + " AS c5_string3, "
                "  tagGroup AS c6_int1, "
                "  tagElement AS c7_int2, "
-               "  " + formatter.FormatNull("BIGINT") + " AS c8_big_int1, "
-               "  " + formatter.FormatNull("BIGINT") + " AS c9_big_int2 "
+               "  " + formatter.FormatNull("INT") + " AS c8_int3, "
+               "  " + formatter.FormatNull("BIGINT") + " AS c9_big_int1, "
+               "  " + formatter.FormatNull("BIGINT") + " AS c10_big_int2 "
                "FROM Lookup "
                "INNER JOIN Resources currentLevel ON Lookup.internalId = currentLevel.internalId "
                "INNER JOIN Resources parentLevel ON currentLevel.parentId = parentLevel.internalId "
@@ -3494,8 +3513,9 @@
                 "  " + formatter.FormatNull("TEXT") + " AS c5_string3, "
                 "  type AS c6_int1, "
                 "  " + formatter.FormatNull("INT") + " AS c7_int2, "
-                "  " + formatter.FormatNull("BIGINT") + " AS c8_big_int1, "
-                "  " + formatter.FormatNull("BIGINT") + " AS c9_big_int2 "
+                "  " + formatter.FormatNull("INT") + " AS c8_int3, "
+                "  " + formatter.FormatNull("BIGINT") + " AS c9_big_int1, "
+                "  " + formatter.FormatNull("BIGINT") + " AS c10_big_int2 "
                 "FROM Lookup "
                 "INNER JOIN Resources currentLevel ON Lookup.internalId = currentLevel.internalId "
                 "INNER JOIN Resources parentLevel ON currentLevel.parentId = parentLevel.internalId "
@@ -3535,8 +3555,9 @@
                "  " + formatter.FormatNull("TEXT") + " AS c5_string3, "
                "  tagGroup AS c6_int1, "
                "  tagElement AS c7_int2, "
-               "  " + formatter.FormatNull("BIGINT") + " AS c8_big_int1, "
-               "  " + formatter.FormatNull("BIGINT") + " AS c9_big_int2 "
+               "  " + formatter.FormatNull("INT") + " AS c8_int3, "
+               "  " + formatter.FormatNull("BIGINT") + " AS c9_big_int1, "
+               "  " + formatter.FormatNull("BIGINT") + " AS c10_big_int2 "
                "FROM Lookup "
                "  INNER JOIN Resources childLevel ON childLevel.parentId = Lookup.internalId "
                "  INNER JOIN MainDicomTags ON MainDicomTags.id = childLevel.internalId AND (tagGroup, tagElement) IN (" + JoinRequestedTags(childrenSpec) + ")";
@@ -3554,8 +3575,9 @@
                "  " + formatter.FormatNull("TEXT") + " AS c5_string3, "
                "  " + formatter.FormatNull("INT") + " AS c6_int1, "
                "  " + formatter.FormatNull("INT") + " AS c7_int2, "
-               "  " + formatter.FormatNull("BIGINT") + " AS c8_big_int1, "
-               "  " + formatter.FormatNull("BIGINT") + " AS c9_big_int2 "
+               "  " + formatter.FormatNull("INT") + " AS c8_int3, "
+               "  " + formatter.FormatNull("BIGINT") + " AS c9_big_int1, "
+               "  " + formatter.FormatNull("BIGINT") + " AS c10_big_int2 "
                "FROM Lookup "
                "  INNER JOIN Resources childLevel ON Lookup.internalId = childLevel.parentId ";
       }
@@ -3571,8 +3593,9 @@
                 "  " + formatter.FormatNull("TEXT") + " AS c5_string3, "
                 "  type AS c6_int1, "
                 "  " + formatter.FormatNull("INT") + " AS c7_int2, "
-                "  " + formatter.FormatNull("BIGINT") + " AS c8_big_int1, "
-                "  " + formatter.FormatNull("BIGINT") + " AS c9_big_int2 "
+                "  " + formatter.FormatNull("INT") + " AS c8_int3, "
+                "  " + formatter.FormatNull("BIGINT") + " AS c9_big_int1, "
+                "  " + formatter.FormatNull("BIGINT") + " AS c10_big_int2 "
                 "FROM Lookup "
                 "  INNER JOIN Resources childLevel ON childLevel.parentId = Lookup.internalId "
                 "  INNER JOIN Metadata ON Metadata.id = childLevel.internalId AND Metadata.type IN (" + JoinRequestedMetadata(childrenSpec) + ") ";
@@ -3606,8 +3629,9 @@
                 "  " + formatter.FormatNull("TEXT") + " AS c5_string3, "
                 "  " + formatter.FormatNull("INT") + " AS c6_int1, "
                 "  " + formatter.FormatNull("INT") + " AS c7_int2, "
-                "  " + formatter.FormatNull("BIGINT") + " AS c8_big_int1, "
-                "  " + formatter.FormatNull("BIGINT") + " AS c9_big_int2 "
+                "  " + formatter.FormatNull("INT") + " AS c8_int3, "
+                "  " + formatter.FormatNull("BIGINT") + " AS c9_big_int1, "
+                "  " + formatter.FormatNull("BIGINT") + " AS c10_big_int2 "
                 "FROM Lookup "
                 "INNER JOIN Resources childLevel ON Lookup.internalId = childLevel.parentId "
                 "INNER JOIN Resources grandChildLevel ON childLevel.internalId = grandChildLevel.parentId ";
@@ -3624,8 +3648,9 @@
                  "  " + formatter.FormatNull("TEXT") + " AS c5_string3, "
                  "  tagGroup AS c6_int1, "
                  "  tagElement AS c7_int2, "
-                 "  " + formatter.FormatNull("BIGINT") + " AS c8_big_int1, "
-                 "  " + formatter.FormatNull("BIGINT") + " AS c9_big_int2 "
+                 "  " + formatter.FormatNull("INT") + " AS c8_int3, "
+                 "  " + formatter.FormatNull("BIGINT") + " AS c9_big_int1, "
+                 "  " + formatter.FormatNull("BIGINT") + " AS c10_big_int2 "
                  "FROM Lookup "
                  "  INNER JOIN Resources childLevel ON childLevel.parentId = Lookup.internalId "
                  "  INNER JOIN Resources grandChildLevel ON grandChildLevel.parentId = childLevel.internalId "
@@ -3643,8 +3668,9 @@
                  "  " + formatter.FormatNull("TEXT") + " AS c5_string3, "
                  "  type AS c6_int1, "
                  "  " + formatter.FormatNull("INT") + " AS c7_int2, "
-                 "  " + formatter.FormatNull("BIGINT") + " AS c8_big_int1, "
-                 "  " + formatter.FormatNull("BIGINT") + " AS c9_big_int2 "
+                 "  " + formatter.FormatNull("INT") + " AS c8_int3, "
+                 "  " + formatter.FormatNull("BIGINT") + " AS c9_big_int1, "
+                 "  " + formatter.FormatNull("BIGINT") + " AS c10_big_int2 "
                  "FROM Lookup "
                  "  INNER JOIN Resources childLevel ON childLevel.parentId = Lookup.internalId "
                  "  INNER JOIN Resources grandChildLevel ON grandChildLevel.parentId = childLevel.internalId "
@@ -3667,8 +3693,9 @@
                   "  " + formatter.FormatNull("TEXT") + " AS c5_string3, "
                   "  " + formatter.FormatNull("INT") + " AS c6_int1, "
                   "  " + formatter.FormatNull("INT") + " AS c7_int2, "
-                  "  " + formatter.FormatNull("BIGINT") + " AS c8_big_int1, "
-                  "  " + formatter.FormatNull("BIGINT") + " AS c9_big_int2 "
+                  "  " + formatter.FormatNull("INT") + " AS c8_int3, "
+                  "  " + formatter.FormatNull("BIGINT") + " AS c9_big_int1, "
+                  "  " + formatter.FormatNull("BIGINT") + " AS c10_big_int2 "
                   "FROM Lookup "
                   "INNER JOIN Resources childLevel ON Lookup.internalId = childLevel.parentId "
                   "INNER JOIN Resources grandChildLevel ON childLevel.internalId = grandChildLevel.parentId "
@@ -3690,8 +3717,9 @@
              "  " + formatter.FormatNull("TEXT") + " AS c5_string3, "
              "  " + formatter.FormatNull("INT") + " AS c6_int1, "
              "  " + formatter.FormatNull("INT") + " AS c7_int2, "
-             "  " + formatter.FormatNull("BIGINT") + " AS c8_big_int1, "
-             "  " + formatter.FormatNull("BIGINT") + " AS c9_big_int2 "
+             "  " + formatter.FormatNull("INT") + " AS c8_int3, "
+             "  " + formatter.FormatNull("BIGINT") + " AS c9_big_int1, "
+             "  " + formatter.FormatNull("BIGINT") + " AS c10_big_int2 "
              "FROM Lookup "
              "  INNER JOIN Resources currentLevel ON currentLevel.internalId = Lookup.internalId "
              "  INNER JOIN Resources parentLevel ON currentLevel.parentId = parentLevel.internalId ";
@@ -3710,8 +3738,9 @@
              "    " + formatter.FormatNull("TEXT") + " AS c5_string3, "
              "    " + formatter.FormatNull("INT") + " AS c6_int1, "
              "    " + formatter.FormatNull("INT") + " AS c7_int2, "
-             "    instanceInternalId AS c8_big_int1, "
-             "    " + formatter.FormatNull("BIGINT") + " AS c9_big_int2 "
+             "  " + formatter.FormatNull("INT") + " AS c8_int3, "
+             "    instanceInternalId AS c9_big_int1, "
+             "    " + formatter.FormatNull("BIGINT") + " AS c10_big_int2 "
              "   FROM OneInstance ";
 
       sql += "   UNION ALL SELECT"
@@ -3723,8 +3752,9 @@
              "    " + formatter.FormatNull("TEXT") + " AS c5_string3, "
              "    Metadata.type AS c6_int1, "
              "    " + formatter.FormatNull("INT") + " AS c7_int2, "
-             "    " + formatter.FormatNull("BIGINT") + " AS c8_big_int1, "
-             "    " + formatter.FormatNull("BIGINT") + " AS c9_big_int2 "
+             "  " + formatter.FormatNull("INT") + " AS c8_int3, "
+             "    " + formatter.FormatNull("BIGINT") + " AS c9_big_int1, "
+             "    " + formatter.FormatNull("BIGINT") + " AS c10_big_int2 "
              "   FROM Metadata "
              "   INNER JOIN OneInstance ON Metadata.id = OneInstance.instanceInternalId";
              
@@ -3737,8 +3767,9 @@
              "    compressedHash AS c5_string3, "
              "    fileType AS c6_int1, "
              "    compressionType AS c7_int2, "
-             "    compressedSize AS c8_big_int1, "
-             "    uncompressedSize AS c9_big_int2 "
+             "  " + formatter.FormatNull("INT") + " AS c8_int3, "
+             "    compressedSize AS c9_big_int1, "
+             "    uncompressedSize AS c10_big_int2 "
              "   FROM AttachedFiles "
              "   INNER JOIN OneInstance ON AttachedFiles.id = OneInstance.instanceInternalId";
 
@@ -3879,8 +3910,10 @@
           attachment->set_compressed_hash(statement->ReadString(C5_STRING_3));
           attachment->set_content_type(statement->ReadInteger32(C6_INT_1));
           attachment->set_compression_type(statement->ReadInteger32(C7_INT_2));
-          attachment->set_compressed_size(statement->ReadInteger64(C8_BIG_INT_1));
-          attachment->set_uncompressed_size(statement->ReadInteger64(C9_BIG_INT_2));
+          attachment->set_compressed_size(statement->ReadInteger64(C9_BIG_INT_1));
+          attachment->set_uncompressed_size(statement->ReadInteger64(C10_BIG_INT_2));
+
+          responses[internalId]->add_attachments_revisions(statement->ReadInteger32(C8_INT_3));
         }; break;
 
         case QUERY_METADATA:
@@ -3935,8 +3968,8 @@
           attachment->set_compressed_hash(statement->ReadString(C5_STRING_3));
           attachment->set_content_type(statement->ReadInteger32(C6_INT_1));
           attachment->set_compression_type(statement->ReadInteger32(C7_INT_2));
-          attachment->set_compressed_size(statement->ReadInteger64(C8_BIG_INT_1));
-          attachment->set_uncompressed_size(statement->ReadInteger64(C9_BIG_INT_2));
+          attachment->set_compressed_size(statement->ReadInteger64(C9_BIG_INT_1));
+          attachment->set_uncompressed_size(statement->ReadInteger64(C10_BIG_INT_2));
         }; break;
 
         default: