From 2fbf7d290f7871b4785123338f7f1de1879ee864 Mon Sep 17 00:00:00 2001 From: Josip Mrden Date: Mon, 5 Jun 2023 17:49:08 +0200 Subject: [PATCH 1/5] Get columns addition of method --- mgclient_cpp/include/mgclient.hpp | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/mgclient_cpp/include/mgclient.hpp b/mgclient_cpp/include/mgclient.hpp index 9070f83..0446135 100644 --- a/mgclient_cpp/include/mgclient.hpp +++ b/mgclient_cpp/include/mgclient.hpp @@ -113,6 +113,8 @@ class Client { /// \brief Fetches all results. std::optional>> FetchAll(); + std::vector GetColumns(); + /// \brief Start a transaction. /// \return true when the transaction was successfully started, false /// otherwise. @@ -138,6 +140,7 @@ class Client { explicit Client(mg_session *session); mg_session *session_; + mg_list *columns_; }; inline std::unique_ptr Client::Connect(const Client::Params ¶ms) { @@ -178,7 +181,7 @@ inline void Client::Finalize() { mg_finalize(); } inline bool Client::Execute(const std::string &statement) { int status = mg_session_run(session_, statement.c_str(), nullptr, nullptr, - nullptr, nullptr); + &columns_, nullptr); if (status < 0) { return false; } @@ -248,6 +251,19 @@ inline std::optional>> Client::FetchAll() { return data; } +inline std::vector Client::GetColumns() { + std::vector columns; + const size_t list_length = mg_list_size(columns_); + + columns.reserve(list_length); + for (size_t i = 0; i < columns.size(); i++) { + columns.push_back( + std::string(Value(mg_list_at(columns_, i)).ValueString())); + } + + return columns; +} + inline bool Client::BeginTransaction() { return mg_session_begin_transaction(session_, nullptr) == 0; } From 818e734f0136633bdae8eb808f9617e501103bce Mon Sep 17 00:00:00 2001 From: Josip Mrden Date: Mon, 5 Jun 2023 17:57:56 +0200 Subject: [PATCH 2/5] Add population of columns --- mgclient_cpp/include/mgclient.hpp | 34 +++++++++++++++++-------------- 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/mgclient_cpp/include/mgclient.hpp b/mgclient_cpp/include/mgclient.hpp index 0446135..8ca4ebe 100644 --- a/mgclient_cpp/include/mgclient.hpp +++ b/mgclient_cpp/include/mgclient.hpp @@ -140,7 +140,7 @@ class Client { explicit Client(mg_session *session); mg_session *session_; - mg_list *columns_; + std::vector columns_; }; inline std::unique_ptr Client::Connect(const Client::Params ¶ms) { @@ -180,8 +180,9 @@ inline int Client::Init() { return mg_init(); } inline void Client::Finalize() { mg_finalize(); } inline bool Client::Execute(const std::string &statement) { + const mg_list *columns; int status = mg_session_run(session_, statement.c_str(), nullptr, nullptr, - &columns_, nullptr); + &columns, nullptr); if (status < 0) { return false; } @@ -191,13 +192,20 @@ inline bool Client::Execute(const std::string &statement) { return false; } + const size_t list_length = mg_list_size(columns); + columns_.clear(); + for (size_t i = 0; i < list_length; i++) { + columns_.push_back(std::string(Value(mg_list_at(columns, i)).ValueString())); + } + return true; } inline bool Client::Execute(const std::string &statement, const ConstMap ¶ms) { + const mg_list *columns; int status = mg_session_run(session_, statement.c_str(), params.ptr(), - nullptr, nullptr, nullptr); + nullptr, &columns, nullptr); if (status < 0) { return false; } @@ -206,6 +214,13 @@ inline bool Client::Execute(const std::string &statement, if (status < 0) { return false; } + + const size_t list_length = mg_list_size(columns); + columns_.clear(); + for (size_t i = 0; i < list_length; i++) { + columns_.push_back(std::string(Value(mg_list_at(columns, i)).ValueString())); + } + return true; } @@ -251,18 +266,7 @@ inline std::optional>> Client::FetchAll() { return data; } -inline std::vector Client::GetColumns() { - std::vector columns; - const size_t list_length = mg_list_size(columns_); - - columns.reserve(list_length); - for (size_t i = 0; i < columns.size(); i++) { - columns.push_back( - std::string(Value(mg_list_at(columns_, i)).ValueString())); - } - - return columns; -} +inline std::vector Client::GetColumns() { return columns_; } inline bool Client::BeginTransaction() { return mg_session_begin_transaction(session_, nullptr) == 0; From 5297906adf18f5ec40d5a89f9dff0176547a6427 Mon Sep 17 00:00:00 2001 From: Marko Budiselic Date: Wed, 28 Jun 2023 06:55:14 +0000 Subject: [PATCH 3/5] Fix format --- mgclient_cpp/include/mgclient.hpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/mgclient_cpp/include/mgclient.hpp b/mgclient_cpp/include/mgclient.hpp index 8ca4ebe..004d0bc 100644 --- a/mgclient_cpp/include/mgclient.hpp +++ b/mgclient_cpp/include/mgclient.hpp @@ -195,7 +195,8 @@ inline bool Client::Execute(const std::string &statement) { const size_t list_length = mg_list_size(columns); columns_.clear(); for (size_t i = 0; i < list_length; i++) { - columns_.push_back(std::string(Value(mg_list_at(columns, i)).ValueString())); + columns_.push_back( + std::string(Value(mg_list_at(columns, i)).ValueString())); } return true; @@ -218,7 +219,8 @@ inline bool Client::Execute(const std::string &statement, const size_t list_length = mg_list_size(columns); columns_.clear(); for (size_t i = 0; i < list_length; i++) { - columns_.push_back(std::string(Value(mg_list_at(columns, i)).ValueString())); + columns_.push_back( + std::string(Value(mg_list_at(columns, i)).ValueString())); } return true; From 5dbf453ef87bc9cd590a3182ecb2c9c913a719d2 Mon Sep 17 00:00:00 2001 From: Josip Mrden Date: Wed, 28 Jun 2023 09:41:28 +0200 Subject: [PATCH 4/5] Address PR comments --- mgclient_cpp/include/mgclient.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mgclient_cpp/include/mgclient.hpp b/mgclient_cpp/include/mgclient.hpp index 004d0bc..e4953c6 100644 --- a/mgclient_cpp/include/mgclient.hpp +++ b/mgclient_cpp/include/mgclient.hpp @@ -113,7 +113,7 @@ class Client { /// \brief Fetches all results. std::optional>> FetchAll(); - std::vector GetColumns(); + const std::vector& GetColumns() const; /// \brief Start a transaction. /// \return true when the transaction was successfully started, false @@ -268,7 +268,7 @@ inline std::optional>> Client::FetchAll() { return data; } -inline std::vector Client::GetColumns() { return columns_; } +inline const std::vector& Client::GetColumns() const { return columns_; } inline bool Client::BeginTransaction() { return mg_session_begin_transaction(session_, nullptr) == 0; From 62d2bae84573d25734ebbae55f98a69617a15a61 Mon Sep 17 00:00:00 2001 From: Josip Mrden Date: Wed, 28 Jun 2023 09:43:03 +0200 Subject: [PATCH 5/5] Format code --- mgclient_cpp/include/mgclient.hpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/mgclient_cpp/include/mgclient.hpp b/mgclient_cpp/include/mgclient.hpp index e4953c6..241fee6 100644 --- a/mgclient_cpp/include/mgclient.hpp +++ b/mgclient_cpp/include/mgclient.hpp @@ -113,7 +113,7 @@ class Client { /// \brief Fetches all results. std::optional>> FetchAll(); - const std::vector& GetColumns() const; + const std::vector &GetColumns() const; /// \brief Start a transaction. /// \return true when the transaction was successfully started, false @@ -268,7 +268,9 @@ inline std::optional>> Client::FetchAll() { return data; } -inline const std::vector& Client::GetColumns() const { return columns_; } +inline const std::vector &Client::GetColumns() const { + return columns_; +} inline bool Client::BeginTransaction() { return mg_session_begin_transaction(session_, nullptr) == 0;