diff --git a/include/caosdb/transaction.h b/include/caosdb/transaction.h index ddf7133492f182d53de372e80420799cbf285ccf..c04e38b06d17af2265584d6a4482b58d77b034c3 100644 --- a/include/caosdb/transaction.h +++ b/include/caosdb/transaction.h @@ -368,6 +368,17 @@ public: return *result_set; } + /** + * Return the result of a count query + * + * Only meaningful if there was exactly one COUNT query executed in + * this transaction. In all other cases, the return value will be + * -1. + */ + [[nodiscard]] inline auto GetCountResult() const -> int { + return query_count; + } + /** * Return the number of sub-requests in this transaction. * @@ -394,6 +405,7 @@ private: MultiTransactionRequest *request; mutable MultiTransactionResponse *response; std::string error_message; + int query_count; }; template <class InputIterator> diff --git a/src/caosdb/transaction.cpp b/src/caosdb/transaction.cpp index 334d8f77ad88f3d4cf39e22fd048a534e7524087..1b19925341fa498f91e0ed309f32d674574245b0 100644 --- a/src/caosdb/transaction.cpp +++ b/src/caosdb/transaction.cpp @@ -166,6 +166,7 @@ Transaction::Transaction( response(google::protobuf::Arena::CreateMessage<MultiTransactionResponse>( get_arena())) { this->service_stub = std::move(service_stub); + this->query_count = -1; } auto Transaction::RetrieveById(const std::string &id) noexcept -> StatusCode {