comparison Framework/Plugins/DatabaseBackendAdapterV4.cpp @ 536:4ecf50a4521c find-refactoring

sync ISqlLookupFormatter from Orthanc + fix bug 224: LIMIT shall not be used with MSSQL
author Alain Mazy <am@orthanc.team>
date Fri, 06 Sep 2024 16:56:37 +0200
parents 25cfcb752af6
children 12f1c5265081
comparison
equal deleted inserted replaced
535:03a4a1bc852a 536:4ecf50a4521c
117 { 117 {
118 private: 118 private:
119 Orthanc::DatabasePluginMessages::DeleteAttachment::Response* deleteAttachment_; 119 Orthanc::DatabasePluginMessages::DeleteAttachment::Response* deleteAttachment_;
120 Orthanc::DatabasePluginMessages::DeleteResource::Response* deleteResource_; 120 Orthanc::DatabasePluginMessages::DeleteResource::Response* deleteResource_;
121 Orthanc::DatabasePluginMessages::GetChanges::Response* getChanges_; 121 Orthanc::DatabasePluginMessages::GetChanges::Response* getChanges_;
122 Orthanc::DatabasePluginMessages::GetChangesExtended::Response* getChangesExtended_;
122 Orthanc::DatabasePluginMessages::GetExportedResources::Response* getExportedResources_; 123 Orthanc::DatabasePluginMessages::GetExportedResources::Response* getExportedResources_;
123 Orthanc::DatabasePluginMessages::GetLastChange::Response* getLastChange_; 124 Orthanc::DatabasePluginMessages::GetLastChange::Response* getLastChange_;
124 Orthanc::DatabasePluginMessages::GetLastExportedResource::Response* getLastExportedResource_; 125 Orthanc::DatabasePluginMessages::GetLastExportedResource::Response* getLastExportedResource_;
125 Orthanc::DatabasePluginMessages::GetMainDicomTags::Response* getMainDicomTags_; 126 Orthanc::DatabasePluginMessages::GetMainDicomTags::Response* getMainDicomTags_;
126 Orthanc::DatabasePluginMessages::LookupAttachment::Response* lookupAttachment_; 127 Orthanc::DatabasePluginMessages::LookupAttachment::Response* lookupAttachment_;
129 void Clear() 130 void Clear()
130 { 131 {
131 deleteAttachment_ = NULL; 132 deleteAttachment_ = NULL;
132 deleteResource_ = NULL; 133 deleteResource_ = NULL;
133 getChanges_ = NULL; 134 getChanges_ = NULL;
135 getChangesExtended_ = NULL;
134 getExportedResources_ = NULL; 136 getExportedResources_ = NULL;
135 getLastChange_ = NULL; 137 getLastChange_ = NULL;
136 getLastExportedResource_ = NULL; 138 getLastExportedResource_ = NULL;
137 getMainDicomTags_ = NULL; 139 getMainDicomTags_ = NULL;
138 lookupAttachment_ = NULL; 140 lookupAttachment_ = NULL;
155 Output(Orthanc::DatabasePluginMessages::GetChanges::Response& getChanges) 157 Output(Orthanc::DatabasePluginMessages::GetChanges::Response& getChanges)
156 { 158 {
157 Clear(); 159 Clear();
158 getChanges_ = &getChanges; 160 getChanges_ = &getChanges;
159 } 161 }
160 162
163 Output(Orthanc::DatabasePluginMessages::GetChangesExtended::Response& getChangesExtended)
164 {
165 Clear();
166 getChangesExtended_ = &getChangesExtended;
167 }
168
161 Output(Orthanc::DatabasePluginMessages::GetExportedResources::Response& getExportedResources) 169 Output(Orthanc::DatabasePluginMessages::GetExportedResources::Response& getExportedResources)
162 { 170 {
163 Clear(); 171 Clear();
164 getExportedResources_ = &getExportedResources; 172 getExportedResources_ = &getExportedResources;
165 } 173 }
307 Orthanc::DatabasePluginMessages::ServerIndexChange* change; 315 Orthanc::DatabasePluginMessages::ServerIndexChange* change;
308 316
309 if (getChanges_ != NULL) 317 if (getChanges_ != NULL)
310 { 318 {
311 change = getChanges_->add_changes(); 319 change = getChanges_->add_changes();
320 }
321 else if (getChangesExtended_ != NULL)
322 {
323 change = getChangesExtended_->add_changes();
312 } 324 }
313 else if (getLastChange_ != NULL) 325 else if (getLastChange_ != NULL)
314 { 326 {
315 if (getLastChange_->found()) 327 if (getLastChange_->found())
316 { 328 {
547 static void ApplyLookupResources(Orthanc::DatabasePluginMessages::LookupResources_Response& response, 559 static void ApplyLookupResources(Orthanc::DatabasePluginMessages::LookupResources_Response& response,
548 const Orthanc::DatabasePluginMessages::LookupResources_Request& request, 560 const Orthanc::DatabasePluginMessages::LookupResources_Request& request,
549 IndexBackend& backend, 561 IndexBackend& backend,
550 DatabaseManager& manager) 562 DatabaseManager& manager)
551 { 563 {
552 std::vector<Orthanc::DatabaseConstraint> lookup; 564 Orthanc::DatabaseConstraints lookup;
553 lookup.reserve(request.lookup().size());
554 565
555 size_t countValues = 0; 566 size_t countValues = 0;
556 567
557 for (int i = 0; i < request.lookup().size(); i++) 568 for (int i = 0; i < request.lookup().size(); i++)
558 { 569 {
622 assert(values.size() < countValues); 633 assert(values.size() < countValues);
623 values.push_back(constraint.values(j).c_str()); 634 values.push_back(constraint.values(j).c_str());
624 } 635 }
625 } 636 }
626 637
627 lookup.push_back(Orthanc::DatabaseConstraint(c)); 638 lookup.AddConstraint(new Orthanc::DatabaseConstraint(c));
628 } 639 }
629 640
630 assert(values.size() == countValues); 641 assert(values.size() == countValues);
631 642
632 std::set<std::string> labels; 643 std::set<std::string> labels;
789 break; 800 break;
790 } 801 }
791 #if ORTHANC_PLUGINS_VERSION_IS_ABOVE(1, 12, 5) 802 #if ORTHANC_PLUGINS_VERSION_IS_ABOVE(1, 12, 5)
792 case Orthanc::DatabasePluginMessages::OPERATION_GET_CHANGES_EXTENDED: 803 case Orthanc::DatabasePluginMessages::OPERATION_GET_CHANGES_EXTENDED:
793 { 804 {
794 Output output(*response.mutable_get_changes()); 805 Output output(*response.mutable_get_changes_extended());
795 806
796 bool done; 807 bool done;
797 backend.GetChangesExtended(output, done, manager, request.get_changes_extended().since(), request.get_changes_extended().to(), static_cast<OrthancPluginChangeType>(request.get_changes_extended().change_type()), request.get_changes_extended().limit()); 808 backend.GetChangesExtended(output, done, manager, request.get_changes_extended().since(), request.get_changes_extended().to(), static_cast<OrthancPluginChangeType>(request.get_changes_extended().change_type()), request.get_changes_extended().limit());
798 809
799 response.mutable_get_changes_extended()->set_done(done); 810 response.mutable_get_changes_extended()->set_done(done);