diff OrthancServer/Sources/Database/StatelessDatabaseOperations.cpp @ 5680:68fc5af30c03

added container class DatabaseConstraints
author Sebastien Jodogne <s.jodogne@gmail.com>
date Tue, 09 Jul 2024 10:09:57 +0200
parents e47ac5e133b1
children 77875b51cf95
line wrap: on
line diff
--- a/OrthancServer/Sources/Database/StatelessDatabaseOperations.cpp	Tue Jul 09 08:56:50 2024 +0200
+++ b/OrthancServer/Sources/Database/StatelessDatabaseOperations.cpp	Tue Jul 09 10:09:57 2024 +0200
@@ -405,12 +405,11 @@
       LoadTags(ResourceType_Instance);
     }
 
-    void NormalizeLookup(std::vector<DatabaseConstraint>& target,
+    void NormalizeLookup(DatabaseConstraints& target,
                          const DatabaseLookup& source,
                          ResourceType queryLevel) const
     {
-      target.clear();
-      target.reserve(source.GetConstraintsCount());
+      target.Clear();
 
       for (size_t i = 0; i < source.GetConstraintsCount(); i++)
       {
@@ -429,7 +428,7 @@
             level = ResourceType_Study;
           }
 
-          target.push_back(source.GetConstraint(i).ConvertToDatabaseConstraint(level, type));
+          target.AddConstraint(source.GetConstraint(i).ConvertToDatabaseConstraint(level, type));
         }
       }
     }
@@ -1687,20 +1686,20 @@
 
     DicomTagConstraint c(tag, ConstraintType_Equal, value, true, true);
 
-    std::vector<DatabaseConstraint> query;
-    query.push_back(c.ConvertToDatabaseConstraint(level, DicomTagType_Identifier));
+    DatabaseConstraints query;
+    query.AddConstraint(c.ConvertToDatabaseConstraint(level, DicomTagType_Identifier));
 
 
     class Operations : public IReadOnlyOperations
     {
     private:
-      std::vector<std::string>&               result_;
-      const std::vector<DatabaseConstraint>&  query_;
-      ResourceType                            level_;
+      std::vector<std::string>&   result_;
+      const DatabaseConstraints&  query_;
+      ResourceType                level_;
       
     public:
       Operations(std::vector<std::string>& result,
-                 const std::vector<DatabaseConstraint>& query,
+                 const DatabaseConstraints& query,
                  ResourceType level) :
         result_(result),
         query_(query),
@@ -1986,7 +1985,7 @@
                                                          LabelsConstraint labelsConstraint,
                                                          uint32_t limit)
   {
-    class Operations : public ReadOnlyOperationsT6<bool, const std::vector<DatabaseConstraint>&, ResourceType,
+    class Operations : public ReadOnlyOperationsT6<bool, const DatabaseConstraints&, ResourceType,
                                                    const std::set<std::string>&, LabelsConstraint, size_t>
     {
     private:
@@ -2032,7 +2031,7 @@
       ServerToolbox::CheckValidLabel(*it);
     }
 
-    std::vector<DatabaseConstraint> normalized;
+    DatabaseConstraints normalized;
 
     assert(mainDicomTagsRegistry_.get() != NULL);
     mainDicomTagsRegistry_->NormalizeLookup(normalized, lookup, queryLevel);