diff --git a/CMakeLists.txt b/CMakeLists.txt index 5efa13e5f7d352a02a4755176e73f440f5c61a45..2f454fe5907ea2c6b6da41cd73e89b055ee529c5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -299,7 +299,7 @@ if(_LINTING) else() message(STATUS "clang-tidy: ${clang_tidy}") set(_CMAKE_CXX_CLANG_TIDY_CHECKS - "--checks=*,-fuchsia-*,-llvmlibc-*,-readability-convert-member-functions-to-static,-cppcoreguidelines-pro-bounds-array-to-pointer-decay,-hicpp-no-array-decay,-llvm-else-after-return,-readability-else-after-return,-modernize-use-trailing-return-type") + "--checks=*,-fuchsia-*,-llvmlibc-*,-readability-convert-member-functions-to-static,-cppcoreguidelines-pro-bounds-array-to-pointer-decay,-hicpp-no-array-decay,-llvm-else-after-return,-readability-else-after-return,-modernize-use-trailing-return-type,-bugprone-branch-clone") set(_CMAKE_C_CLANG_TIDY_CHECKS "${_CMAKE_CXX_CLANG_TIDY_CHECKS}") set(_CMAKE_CXX_CLANG_TIDY "${clang_tidy}" "--header-filter=caosdb/.*[^\(\.pb\.h\)]$" diff --git a/include/caosdb/transaction.h b/include/caosdb/transaction.h index 653dcf740b03f8394deadbc8d9306ef843d3cf96..fbbd081b67094abe0b2df8ed079877efe87ee7bd 100644 --- a/include/caosdb/transaction.h +++ b/include/caosdb/transaction.h @@ -33,6 +33,7 @@ #include "google/protobuf/util/json_util.h" // for MessageToJsonString, Jso... #include <stdexcept> #include <iterator> +// IWYU pragma: no_include <ext/alloc_traits.h> #include <memory> // for shared_ptr, unique_ptr #include <string> // for string #include <vector> // for vector @@ -119,6 +120,8 @@ using caosdb::transaction::TransactionStatus; using WrappedResponseCase = caosdb::entity::v1alpha1::TransactionResponse::WrappedResponseCase; +class Transaction; + static const std::string logger_name = "caosdb::transaction"; class ResultSet { @@ -131,31 +134,7 @@ public: class MultiResultSet : public ResultSet { public: ~MultiResultSet() = default; - explicit inline MultiResultSet(MultiTransactionResponse *response) { - auto responses = response->mutable_responses(); - Entity *entity = nullptr; - for (auto sub_response : *responses) { - switch (sub_response.wrapped_response_case()) { - case WrappedResponseCase::kRetrieveResponse: - entity = new Entity( - sub_response.mutable_retrieve_response()->release_entity()); - break; - case WrappedResponseCase::kInsertResponse: - - entity = new Entity(sub_response.release_insert_response()); - break; - case WrappedResponseCase::kDeleteResponse: - entity = new Entity(sub_response.release_delete_response()); - break; - default: - // TODO(tf) Updates - break; - } - if (entity) { - this->entities.push_back(std::unique_ptr<Entity>(entity)); - } - } - } + explicit MultiResultSet(MultiTransactionResponse *response); [[nodiscard]] inline auto Size() const noexcept -> int override { return this->entities.size(); } diff --git a/src/caosdb/configuration.cpp b/src/caosdb/configuration.cpp index ffa860471821b8733efeadf77801b8155ae6711e..76c437234a48fb339f1e04d71afe3ae84ce94ceb 100644 --- a/src/caosdb/configuration.cpp +++ b/src/caosdb/configuration.cpp @@ -39,11 +39,12 @@ #include <cstdlib> // for getenv #include <cstring> // for strcmp #include <exception> // IWYU pragma: keep -#include <grpcpp/security/credentials.h> // for SslCredentials -#include <iterator> // for next -#include <map> // for map -#include <stdexcept> // for out_of_range -#include <string> // for string, operator+ +// IWYU pragma: no_include <bits/exception.h> +#include <grpcpp/security/credentials.h> // for SslCredentials +#include <iterator> // for next +#include <map> // for map +#include <stdexcept> // for out_of_range +#include <string> // for string, operator+ namespace caosdb::configuration { using boost::filesystem::exists; diff --git a/src/caosdb/transaction.cpp b/src/caosdb/transaction.cpp index e900560a6989654cdae701b41e323f908477357a..d0b9025b7b1a5b48741e8687db9c21136864c683 100644 --- a/src/caosdb/transaction.cpp +++ b/src/caosdb/transaction.cpp @@ -90,6 +90,29 @@ using grpc::ClientAsyncResponseReader; using ProtoEntity = caosdb::entity::v1alpha1::Entity; using grpc::CompletionQueue; +MultiResultSet::MultiResultSet(MultiTransactionResponse *response) { + auto *responses = response->mutable_responses(); + for (auto sub_response : *responses) { + switch (sub_response.wrapped_response_case()) { + case WrappedResponseCase::kRetrieveResponse: + this->entities.push_back(std::make_unique<Entity>( + sub_response.mutable_retrieve_response()->release_entity())); + break; + case WrappedResponseCase::kInsertResponse: + this->entities.push_back( + std::make_unique<Entity>(sub_response.release_insert_response())); + break; + case WrappedResponseCase::kDeleteResponse: + this->entities.push_back( + std::make_unique<Entity>(sub_response.release_insert_response())); + break; + default: + // TODO(tf) Updates + break; + } + } +} + [[nodiscard]] auto UniqueResult::GetEntity() const -> const Entity & { const Entity *result = this->entity.get(); return *result; @@ -239,7 +262,7 @@ auto Transaction::WaitForIt() const noexcept -> TransactionStatus { this->result_set = std::make_unique<UniqueResult>(deletedIdResponse); } break; default: - // TODO(tf) + // TODO(tf) Error and Update break; } } else {