Mercurial > hg > orthanc-databases
diff Framework/Plugins/IndexBackend.cpp @ 580:35d2df9572b1 find-refactoring
count-resources
author | Alain Mazy <am@orthanc.team> |
---|---|
date | Tue, 15 Oct 2024 15:52:39 +0200 |
parents | 77c8544bbd7d |
children | a80775ee5eea |
line wrap: on
line diff
--- a/Framework/Plugins/IndexBackend.cpp Tue Oct 08 17:57:22 2024 +0200 +++ b/Framework/Plugins/IndexBackend.cpp Tue Oct 15 15:52:39 2024 +0200 @@ -3187,6 +3187,24 @@ #define STRINGIFY(x) #x #define TOSTRING(x) STRINGIFY(x) + void IndexBackend::ExecuteCount(Orthanc::DatabasePluginMessages::TransactionResponse& response, + DatabaseManager& manager, + const Orthanc::DatabasePluginMessages::Find_Request& request) + { + std::string sql; + + LookupFormatter formatter(manager.GetDialect()); + std::string lookupSql; + ISqlLookupFormatter::Apply(lookupSql, formatter, request); + + sql = "WITH Lookup AS (" + lookupSql + ") SELECT COUNT(*) FROM Lookup"; + + DatabaseManager::StandaloneStatement statement(manager, sql); // TODO-FIND: cache dynamic statement ? Probably worth it since it can be very complex queries ! + formatter.PrepareStatement(statement); + statement.Execute(formatter.GetDictionary()); + response.mutable_count_resources()->set_count(statement.ReadInteger64(0)); + } + void IndexBackend::ExecuteFind(Orthanc::DatabasePluginMessages::TransactionResponse& response, DatabaseManager& manager, const Orthanc::DatabasePluginMessages::Find_Request& request)