diff --git a/backends/postgres/include/postgres_connection.hpp b/backends/postgres/include/postgres_connection.hpp index bde2007..0044ef1 100644 --- a/backends/postgres/include/postgres_connection.hpp +++ b/backends/postgres/include/postgres_connection.hpp @@ -31,7 +31,7 @@ public: [[nodiscard]] utils::result client_version() const override; [[nodiscard]] utils::result server_version() const override; - utils::result execute(const std::string &stmt) override; + utils::result execute(const std::string &stmt) override; utils::result, utils::error> prepare(const sql::query_context &context) override; utils::result, utils::error> fetch(const sql::query_context &context) override; diff --git a/backends/postgres/include/postgres_statement.hpp b/backends/postgres/include/postgres_statement.hpp index e882738..c0a4134 100644 --- a/backends/postgres/include/postgres_statement.hpp +++ b/backends/postgres/include/postgres_statement.hpp @@ -14,7 +14,7 @@ public: postgres_statement(PGconn *db, PGresult *res, std::string name, const sql::query_context &query); ~postgres_statement() override; - utils::result execute(const sql::parameter_binder& bindings) override; + utils::result execute(const sql::parameter_binder& bindings) override; utils::result, utils::error> fetch(const sql::parameter_binder& bindings) override; protected: diff --git a/backends/postgres/src/postgres_connection.cpp b/backends/postgres/src/postgres_connection.cpp index 4da9bba..925e822 100644 --- a/backends/postgres/src/postgres_connection.cpp +++ b/backends/postgres/src/postgres_connection.cpp @@ -142,18 +142,18 @@ utils::result, utils::error> postgres_conne return utils::ok(std::move(s)); } -utils::result postgres_connection::execute(const std::string &stmt) { +utils::result postgres_connection::execute(const std::string &stmt) { PGresult *res = PQexec(conn_, stmt.c_str()); if (const auto status = PQresultStatus(res); status != PGRES_COMMAND_OK && status != PGRES_TUPLES_OK) { return utils::failure(make_error(sql::error_code::FAILURE, res, conn_, "Failed to execute", stmt)); } - const auto affected_rows = utils::to(PQcmdTuples(res)); + const size_t affected_rows = utils::to(PQcmdTuples(res)); PQclear(res); - return utils::ok(static_cast(affected_rows)); + return utils::ok(sql::execute_result{affected_rows}); } utils::basic_type oid2type(const Oid oid) { diff --git a/backends/postgres/src/postgres_statement.cpp b/backends/postgres/src/postgres_statement.cpp index 9159859..1320c6a 100644 --- a/backends/postgres/src/postgres_statement.cpp +++ b/backends/postgres/src/postgres_statement.cpp @@ -1,4 +1,6 @@ #include "postgres_statement.hpp" + +#include "matador/sql/execute_result.hpp" #include "postgres_error.hpp" #include "postgres_parameter_binder.h" #include "postgres_result_reader.hpp" @@ -16,7 +18,7 @@ postgres_statement::~postgres_statement() { PQclear(res_); } -utils::result postgres_statement::execute(const sql::parameter_binder& bindings) { +utils::result postgres_statement::execute(const sql::parameter_binder& bindings) { const auto* postgres_bindings = dynamic_cast(&bindings); if (!postgres_bindings) { return utils::failure(utils::error(sql::error_code::EXECUTE_FAILED, "Failed to cast bindings to postgres bindings")); @@ -40,7 +42,7 @@ utils::result postgres_statement::execute(const sql::param PQclear(res); - return utils::ok(value); + return utils::ok(sql::execute_result{value}); } utils::result, utils::error> postgres_statement::fetch(const sql::parameter_binder& bindings) { diff --git a/include/matador/orm/session.hpp b/include/matador/orm/session.hpp index 851ce52..7a03b77 100644 --- a/include/matador/orm/session.hpp +++ b/include/matador/orm/session.hpp @@ -130,14 +130,14 @@ public: [[nodiscard]] utils::result, utils::error> fetch_all(const sql::query_context &q) const; - [[nodiscard]] utils::result execute(const std::string &sql) const; + [[nodiscard]] utils::result execute(const std::string &sql) const; [[nodiscard]] std::vector describe_table(const std::string &table_name) const; [[nodiscard]] bool table_exists(const std::string &table_name) const; [[nodiscard]] utils::result, utils::error> fetch( const sql::query_context &ctx) const override; - [[nodiscard]] utils::result execute(const sql::query_context &ctx) const override; + [[nodiscard]] utils::result execute(const sql::query_context &ctx) const override; [[nodiscard]] utils::result prepare(const sql::query_context &ctx) override; [[nodiscard]] std::string str(const sql::query_context &ctx) const override; [[nodiscard]] const sql::dialect &dialect() const override; diff --git a/include/matador/query/intermediates/executable_query.hpp b/include/matador/query/intermediates/executable_query.hpp index b4d513e..ac5e681 100644 --- a/include/matador/query/intermediates/executable_query.hpp +++ b/include/matador/query/intermediates/executable_query.hpp @@ -9,6 +9,7 @@ namespace matador::sql { class executor; class statement; +struct execute_result; struct query_context; } @@ -18,7 +19,7 @@ class executable_query : public query_intermediate { public: using query_intermediate::query_intermediate; - [[nodiscard]] utils::result execute(const sql::executor &exec) const; + [[nodiscard]] utils::result execute(const sql::executor &exec) const; [[nodiscard]] utils::result prepare(sql::executor &exec) const; [[nodiscard]] sql::query_context compile(const sql::executor &exec) const; [[nodiscard]] std::string str(const sql::executor &exec) const; diff --git a/include/matador/sql/connection.hpp b/include/matador/sql/connection.hpp index ff5f2d6..76c46e5 100644 --- a/include/matador/sql/connection.hpp +++ b/include/matador/sql/connection.hpp @@ -5,6 +5,7 @@ #include "matador/sql/abstract_sql_logger.hpp" #include "matador/sql/connection_info.hpp" +#include "matador/sql/execute_result.hpp" #include "matador/sql/executor.hpp" #include "matador/sql/resolver_service.hpp" #include "matador/sql/statement.hpp" @@ -134,10 +135,8 @@ public: [[nodiscard]] utils::result exists(const std::string &schema_name, const std::string &table_name) const; [[nodiscard]] utils::result exists(const std::string &table_name) const; - [[nodiscard]] utils::result execute(const std::string &sql) const; - [[nodiscard]] utils::result, utils::error> fetch(const query_context &ctx) const override; - [[nodiscard]] utils::result execute(const query_context &ctx) const override; + [[nodiscard]] utils::result execute(const query_context &ctx) const override; [[nodiscard]] utils::result prepare(const query_context &ctx) override; [[nodiscard]] std::string str( const query_context& ctx ) const override; diff --git a/include/matador/sql/execute_result.hpp b/include/matador/sql/execute_result.hpp new file mode 100644 index 0000000..bbb7683 --- /dev/null +++ b/include/matador/sql/execute_result.hpp @@ -0,0 +1,11 @@ +#ifndef MATADOR_EXECUTE_RESULT_HPP +#define MATADOR_EXECUTE_RESULT_HPP +#include + +namespace matador::sql { +struct execute_result { + size_t affected_rows{}; + std::vector insert_ids{}; +}; +} +#endif // MATADOR_EXECUTE_RESULT_HPP diff --git a/include/matador/sql/executor.hpp b/include/matador/sql/executor.hpp index 3967609..23c4956 100644 --- a/include/matador/sql/executor.hpp +++ b/include/matador/sql/executor.hpp @@ -11,6 +11,7 @@ namespace matador::sql { struct query_context; +struct execute_result; class query_result_impl; class statement; @@ -18,7 +19,7 @@ class executor { public: virtual ~executor() = default; [[nodiscard]] virtual const class dialect& dialect() const = 0; - [[nodiscard]] virtual utils::result execute(const query_context &ctx) const = 0; + [[nodiscard]] virtual utils::result execute(const query_context &ctx) const = 0; [[nodiscard]] virtual utils::result, utils::error> fetch(const query_context &ctx) const = 0; [[nodiscard]] virtual utils::result prepare(const query_context &ctx) = 0; [[nodiscard]] virtual std::string str(const query_context &ctx) const = 0; diff --git a/include/matador/sql/interface/connection_impl.hpp b/include/matador/sql/interface/connection_impl.hpp index 159102f..0bd5be7 100644 --- a/include/matador/sql/interface/connection_impl.hpp +++ b/include/matador/sql/interface/connection_impl.hpp @@ -6,7 +6,7 @@ #include "matador/object/attribute.hpp" #include "matador/sql/connection_info.hpp" -#include "matador/sql/query_context.hpp" +#include "matador/sql/execute_result.hpp" #include "matador/utils/error.hpp" #include "matador/utils/result.hpp" @@ -18,6 +18,7 @@ using blob_type_t = std::vector; namespace matador::sql { +struct query_context; class query_result_impl; class statement_impl; @@ -34,7 +35,7 @@ public: [[nodiscard]] virtual utils::result client_version() const = 0; [[nodiscard]] virtual utils::result server_version() const = 0; - virtual utils::result execute(const std::string &stmt) = 0; + virtual utils::result execute(const std::string &stmt) = 0; virtual utils::result, utils::error> fetch(const query_context &context) = 0; virtual utils::result, utils::error> prepare(const query_context &context) = 0; diff --git a/include/matador/sql/interface/statement_impl.hpp b/include/matador/sql/interface/statement_impl.hpp index c64803a..f05a3b3 100644 --- a/include/matador/sql/interface/statement_impl.hpp +++ b/include/matador/sql/interface/statement_impl.hpp @@ -13,6 +13,7 @@ #include namespace matador::sql { +struct execute_result; class query_result_impl; class sql_error; @@ -23,7 +24,7 @@ protected: public: virtual ~statement_impl() = default; - virtual utils::result execute(const parameter_binder& bindings) = 0; + virtual utils::result execute(const parameter_binder& bindings) = 0; virtual utils::result, utils::error> fetch(const parameter_binder& bindings) = 0; template < class Type > diff --git a/include/matador/sql/interface/statement_proxy.hpp b/include/matador/sql/interface/statement_proxy.hpp index 8dc27ce..589679c 100644 --- a/include/matador/sql/interface/statement_proxy.hpp +++ b/include/matador/sql/interface/statement_proxy.hpp @@ -12,7 +12,7 @@ protected: public: virtual ~statement_proxy() = default; - virtual utils::result execute(parameter_binder& bindings) = 0; + virtual utils::result execute(parameter_binder& bindings) = 0; virtual utils::result, utils::error> fetch(parameter_binder& bindings) = 0; template diff --git a/include/matador/sql/statement.hpp b/include/matador/sql/statement.hpp index 31e8382..40fd7ea 100644 --- a/include/matador/sql/statement.hpp +++ b/include/matador/sql/statement.hpp @@ -71,7 +71,7 @@ public: * * @return The number of affected rows */ - [[nodiscard]] utils::result execute() const; + [[nodiscard]] utils::result execute() const; /** * Fetches the result of the prepared diff --git a/include/matador/utils/primary_key_attribute.hpp b/include/matador/utils/primary_key_attribute.hpp index 4bd845e..b7fa6ba 100644 --- a/include/matador/utils/primary_key_attribute.hpp +++ b/include/matador/utils/primary_key_attribute.hpp @@ -14,8 +14,8 @@ public: */ primary_key_attribute() = default; /** - * Creates primary_key_attribute instance - * with given size. + * Creates a primary_key_attribute instance with a + * given size. * * @param size Size of the attribute */ @@ -44,7 +44,7 @@ public: [[nodiscard]] generator_type generator() const; private: size_t size_ = 0; - generator_type generator_ = generator_type::MANUALLY; + generator_type generator_ = generator_type::Manually; }; const primary_key_attribute default_pk_attributes {}; diff --git a/include/matador/utils/primary_key_generator_type.hpp b/include/matador/utils/primary_key_generator_type.hpp index ca80ce4..5f668dd 100644 --- a/include/matador/utils/primary_key_generator_type.hpp +++ b/include/matador/utils/primary_key_generator_type.hpp @@ -3,11 +3,11 @@ namespace matador::utils { enum class generator_type { - MANUALLY, - AUTO, - IDENTITY, - SEQUENCE, - TABLE + Manually, /**< User sets the primary key value manually. */ + Auto, /**< Matador chooses the best generator type depending on the underlying dbms. */ + Identity, /**< DBMS automatically generates the primary key value. */ + Sequence, /**< DBMS automatically generates the primary key value by using a sequence table. */ + Table /**< DBMS automatically generates the primary key value by using a table. */ }; } #endif //PRIMARY_KEY_GENERATOR_TYPE_HPP diff --git a/source/orm/CMakeLists.txt b/source/orm/CMakeLists.txt index 0147181..f749105 100644 --- a/source/orm/CMakeLists.txt +++ b/source/orm/CMakeLists.txt @@ -76,6 +76,7 @@ add_library(matador-orm STATIC ../../include/matador/sql/dialect_builder.hpp ../../include/matador/sql/dialect_token.hpp ../../include/matador/sql/error_code.hpp + ../../include/matador/sql/execute_result.hpp ../../include/matador/sql/executor.hpp ../../include/matador/sql/field.hpp ../../include/matador/sql/interface/connection_impl.hpp diff --git a/source/orm/orm/session.cpp b/source/orm/orm/session.cpp index 50de345..361cc93 100644 --- a/source/orm/orm/session.cpp +++ b/source/orm/orm/session.cpp @@ -60,7 +60,7 @@ utils::result, utils::error> session::fetch_all(c return utils::ok(sql::query_result{std::move(*res), prototype}); } -utils::result session::execute(const std::string &sql) const { +utils::result session::execute(const std::string &sql) const { return execute(sql::query_context{sql}); } @@ -102,7 +102,7 @@ utils::result, utils::error> session::fe } } -utils::result session::execute(const sql::query_context& ctx) const { +utils::result session::execute(const sql::query_context& ctx) const { if (const auto result = cache_.acquire(ctx); !result) { return utils::failure(result.err()); } else if (auto exec_result = result->execute(); !exec_result) { diff --git a/source/orm/query/intermediates/executable_query.cpp b/source/orm/query/intermediates/executable_query.cpp index cb3d072..f1430dc 100644 --- a/source/orm/query/intermediates/executable_query.cpp +++ b/source/orm/query/intermediates/executable_query.cpp @@ -1,12 +1,13 @@ #include "matador/query/intermediates/executable_query.hpp" #include "matador/query/query_builder.hpp" +#include "matador/sql/execute_result.hpp" #include "matador/sql/executor.hpp" #include "matador/sql/statement.hpp" namespace matador::query { -utils::result executable_query::execute(const sql::executor &exec) const { +utils::result executable_query::execute(const sql::executor &exec) const { query_builder compiler; return exec.execute(compiler.compile(*context_, exec.dialect(), std::nullopt)); } diff --git a/source/orm/query/schema.cpp b/source/orm/query/schema.cpp index 6963cd9..730b54f 100644 --- a/source/orm/query/schema.cpp +++ b/source/orm/query/schema.cpp @@ -56,7 +56,7 @@ utils::result schema::create(const sql::connection &conn) co .compile(conn); std::cout << ctx.sql << std::endl; - if (auto result = conn.execute(ctx.sql); !result) { + if (auto result = conn.execute(ctx); !result) { return utils::failure(result.err()); } } @@ -70,7 +70,7 @@ utils::result schema::create(const sql::connection &conn) co auto ctx = build_add_constraint_context(node, cons, conn); std::cout << ctx.sql << std::endl; - if (auto result = conn.execute(ctx.sql); !result) { + if (auto result = conn.execute(ctx); !result) { return utils::failure(result.err()); } } @@ -84,7 +84,7 @@ utils::result schema::create(const sql::connection &conn) co auto ctx = build_add_constraint_context(node, cons, conn); std::cout << ctx.sql << std::endl; - if (auto result = conn.execute(ctx.sql); !result) { + if (auto result = conn.execute(ctx); !result) { return utils::failure(result.err()); } } @@ -105,7 +105,7 @@ utils::result schema::drop(const sql::connection &conn) cons .compile(conn); std::cout << ctx.sql << std::endl; - if (auto result = conn.execute(ctx.sql); !result) { + if (auto result = conn.execute(ctx); !result) { return utils::failure(result.err()); } } @@ -123,7 +123,7 @@ utils::result schema::drop(const sql::connection &conn) cons .compile(conn); std::cout << ctx.sql << std::endl; - if (auto result = conn.execute(ctx.sql); !result) { + if (auto result = conn.execute(ctx); !result) { return utils::failure(result.err()); } } @@ -136,7 +136,7 @@ utils::result schema::drop(const sql::connection &conn) cons .compile(conn); std::cout << ctx.sql << std::endl; - if (auto result = conn.execute(ctx.sql); !result) { + if (auto result = conn.execute(ctx); !result) { return utils::failure(result.err()); } } diff --git a/source/orm/sql/connection.cpp b/source/orm/sql/connection.cpp index beb0a04..4bb4efb 100644 --- a/source/orm/sql/connection.cpp +++ b/source/orm/sql/connection.cpp @@ -18,7 +18,7 @@ public: explicit connection_statement_proxy(std::unique_ptr&& stmt) : statement_proxy(std::move(stmt)) {} - utils::result execute(parameter_binder& bindings) override { + utils::result execute(parameter_binder& bindings) override { return statement_->execute(bindings); } utils::result, utils::error> fetch(parameter_binder& bindings) override { @@ -163,53 +163,22 @@ utils::result connection::exists(const std::string &table_na return connection_->exists(dialect().default_schema_name(), table_name); } -utils::result connection::execute(const std::string &sql) const { - logger_->on_execute(sql); - std::cout << sql << std::endl; - return connection_->execute(sql); -} - bool has_unknown_columns(const std::vector &columns) { return std::any_of(std::begin(columns), std::end(columns), [](const auto &col) { return col.type() == utils::basic_type::Null; }); } -// query_result connection::fetch(const query_context &ctx) const -// { -// if (ctx.prototype.empty() || is_unknown(ctx.prototype)) { -// const auto table_prototype = describe(ctx.table.name); -// for (auto &col : ctx.prototype) { -// const auto rit = std::find_if(std::begin(table_prototype), std::end(table_prototype), [&col](const auto &value) { -// return value.name() == col.name(); -// }); -// if (col.type() == data_type::type_unknown && rit != table_prototype.end()) { -// const_cast(col).type(rit->type()); -// } -// } -// } -// // auto it = prototypes_.find(q.table_name); -// // if (it == prototypes_.end()) { -// // it = prototypes_.emplace(q.table_name, describe(q.table_name)).first; -// // } -// // // adjust columns from given query -// // for (auto &col : q.prototype) { -// // if (const auto rit = it->second.find(col.name()); col.type() == data_type_t::type_unknown && rit != it->second.end()) { -// // const_cast(col).type(rit->type()); -// // } -// // } -// auto res = fetch(ctx.sql); -// return query_result{std::move(res), ctx.prototype}; -// } - utils::result, utils::error> connection::fetch(const query_context &ctx) const { logger_->on_fetch(ctx.sql); std::cout << ctx.sql << std::endl; return connection_->fetch(ctx); } -utils::result connection::execute(const query_context& ctx) const { - return execute(ctx.sql); +utils::result connection::execute(const query_context& ctx) const { + logger_->on_execute(ctx.sql); + std::cout << ctx.sql << std::endl; + return connection_->execute(ctx.sql); } utils::result connection::prepare(const query_context &ctx) { diff --git a/source/orm/sql/statement.cpp b/source/orm/sql/statement.cpp index 518c03d..6cb9d0c 100644 --- a/source/orm/sql/statement.cpp +++ b/source/orm/sql/statement.cpp @@ -1,4 +1,5 @@ #include "matador/sql/statement.hpp" +#include "matador/sql/execute_result.hpp" #include "matador/sql/record.hpp" #include @@ -49,7 +50,7 @@ statement &statement::bind(const size_t pos, std::string &val, const size_t size return *this; } -utils::result statement::execute() const { +utils::result statement::execute() const { logger_->on_execute(statement_proxy_->sql()); std::cout << statement_proxy_->sql() << std::endl; return statement_proxy_->execute(*bindings_); diff --git a/source/orm/sql/statement_cache.cpp b/source/orm/sql/statement_cache.cpp index f10727b..7df2a92 100644 --- a/source/orm/sql/statement_cache.cpp +++ b/source/orm/sql/statement_cache.cpp @@ -31,10 +31,10 @@ public: , connection_id_(connection_id) , bus_(bus) {} - utils::result execute(parameter_binder& bindings) override { + utils::result execute(parameter_binder& bindings) override { execution_metrics metrics{std::chrono::steady_clock::now()}; - auto result = try_with_retry([this, &bindings, &metrics]() -> utils::result { + auto result = try_with_retry([this, &bindings, &metrics]() -> utils::result { const auto query = sql(); if (!try_lock()) { ++metrics.lock_attempts; diff --git a/test/backends/QueryBasicTest.cpp b/test/backends/QueryBasicTest.cpp index fc806d9..e9444db 100644 --- a/test/backends/QueryBasicTest.cpp +++ b/test/backends/QueryBasicTest.cpp @@ -73,7 +73,7 @@ TEST_CASE_METHOD(QueryFixture, "Insert and select basic datatypes", "[query][dat .values(t) .execute(db); REQUIRE(res.is_ok()); - REQUIRE(*res == 1); + REQUIRE(res->affected_rows == 1); auto result = query::select(repo) .from("types") @@ -110,7 +110,7 @@ TEST_CASE_METHOD( QueryFixture, "Test quoted identifier", "[query][quotes][ident }) .execute(db); REQUIRE(res.is_ok()); - REQUIRE(*res == 0); + REQUIRE(res->affected_rows == 0); tables_to_drop.emplace("quotes"); // check table description @@ -131,7 +131,7 @@ TEST_CASE_METHOD( QueryFixture, "Test quoted identifier", "[query][quotes][ident .values({"Berlin", "London"}) .execute(db); REQUIRE(res.is_ok()); - REQUIRE(*res == 1); + REQUIRE(res->affected_rows == 1); auto row = query::select({"from", "to"}) .from("quotes") @@ -147,7 +147,7 @@ TEST_CASE_METHOD( QueryFixture, "Test quoted identifier", "[query][quotes][ident .where("from"_col == "Berlin") .execute(db); REQUIRE(res.is_ok()); - REQUIRE(*res == 1); + REQUIRE(res->affected_rows == 1); row = query::select({"from", "to"}) .from("quotes") @@ -182,7 +182,7 @@ TEST_CASE_METHOD( QueryFixture, "Test quoted column names", "[query][quotes][col }) .execute(db); REQUIRE(res.is_ok()); - REQUIRE(*res == 0); + REQUIRE(res->affected_rows == 0); const auto columns = db.describe("quotes"); REQUIRE(columns.is_ok()); @@ -196,7 +196,7 @@ TEST_CASE_METHOD( QueryFixture, "Test quoted column names", "[query][quotes][col .table("quotes") .execute(db); REQUIRE(res.is_ok()); - REQUIRE(*res == 0); + REQUIRE(res->affected_rows == 0); } } @@ -208,7 +208,7 @@ TEST_CASE_METHOD(QueryFixture, "Test quoted literals", "[query][quotes][literals }) .execute(db); REQUIRE(res.is_ok()); - REQUIRE(*res == 0); + REQUIRE(res->affected_rows == 0); tables_to_drop.emplace("escapes"); res = query::insert() @@ -216,7 +216,7 @@ TEST_CASE_METHOD(QueryFixture, "Test quoted literals", "[query][quotes][literals .values({"text"}) .execute(db); REQUIRE(res.is_ok()); - REQUIRE(*res == 1); + REQUIRE(res->affected_rows == 1); auto row = query::select({"name"}) .from("escapes") @@ -230,7 +230,7 @@ TEST_CASE_METHOD(QueryFixture, "Test quoted literals", "[query][quotes][literals .set({{"name", "text'd"}}) .execute(db); REQUIRE(res.is_ok()); - REQUIRE(*res == 1); + REQUIRE(res->affected_rows == 1); row = query::select({"name"}) .from("escapes") @@ -244,7 +244,7 @@ TEST_CASE_METHOD(QueryFixture, "Test quoted literals", "[query][quotes][literals .set({{"name", "text\nhello\tworld"}}) .execute(db); REQUIRE(res.is_ok()); - REQUIRE(*res == 1); + REQUIRE(res->affected_rows == 1); row = query::select({"name"}) .from("escapes") @@ -258,7 +258,7 @@ TEST_CASE_METHOD(QueryFixture, "Test quoted literals", "[query][quotes][literals .set({{"name", "text \"text\""}}) .execute(db); REQUIRE(res.is_ok()); - REQUIRE(*res == 1); + REQUIRE(res->affected_rows == 1); row = query::select({"name"}) .from("escapes") @@ -350,7 +350,7 @@ TEST_CASE_METHOD(QueryFixture, "Test primary key", "[query][primary key]") { .values(pk1) .execute(db); REQUIRE(res.is_ok()); - REQUIRE(*res == 1); + REQUIRE(res->affected_rows == 1); auto row = query::select(repo) .from("pk") @@ -377,7 +377,7 @@ TEST_CASE_METHOD(QueryFixture, "Test primary key prepared", "[query][primary key auto res = stmt->bind(pk1) .execute(); REQUIRE(res.is_ok()); - REQUIRE(*res == 1); + REQUIRE(res->affected_rows == 1); stmt = query::select(repo) .from("pk") @@ -418,7 +418,7 @@ TEST_CASE_METHOD(QueryFixture, "Test primary key prepared", "[query][primary key // .table("appointment", schema) // .execute(db); // REQUIRE(res.is_ok()); -// REQUIRE(*res == 0); +// REQUIRE(res->affected_rows == 0); // tables_to_drop.emplace("appointment"); // // auto dinner = appointment{ 1, "dinner" }; @@ -430,7 +430,7 @@ TEST_CASE_METHOD(QueryFixture, "Test primary key prepared", "[query][primary key // .values(dinner) // .execute(db); // REQUIRE(res.is_ok()); -// REQUIRE(*res == 1); +// REQUIRE(res->affected_rows == 1); // // auto row = query::select(schema) // .from("appointment") @@ -453,7 +453,7 @@ TEST_CASE_METHOD(QueryFixture, "Test primary key prepared", "[query][primary key // }) // .execute(db); // REQUIRE(res.is_ok()); -// REQUIRE(*res == 0); +// REQUIRE(res->affected_rows == 0); // tables_to_drop.emplace("person"); // // res = query::insert() @@ -461,14 +461,14 @@ TEST_CASE_METHOD(QueryFixture, "Test primary key prepared", "[query][primary key // .values({1, "george"}) // .execute(db); // REQUIRE(res.is_ok()); -// REQUIRE(*res == 1); +// REQUIRE(res->affected_rows == 1); // // res = query::insert() // .into("person", {"id", "last_name"}) // .values({2, "clooney"}) // .execute(db); // REQUIRE(res.is_ok()); -// REQUIRE(*res == 1); +// REQUIRE(res->affected_rows == 1); // // auto result = query::select({"id", "first_name", "last_name"}) // .from("person") @@ -498,7 +498,7 @@ TEST_CASE_METHOD(QueryFixture, "Test primary key prepared", "[query][primary key // }) // .execute(db); // REQUIRE(res.is_ok()); -// REQUIRE(*res == 0); +// REQUIRE(res->affected_rows == 0); // tables_to_drop.emplace("person"); // // res = query::insert() @@ -506,14 +506,14 @@ TEST_CASE_METHOD(QueryFixture, "Test primary key prepared", "[query][primary key // .values({1, "george"}) // .execute(db); // REQUIRE(res.is_ok()); -// REQUIRE(*res == 1); +// REQUIRE(res->affected_rows == 1); // // res = query::insert() // .into("person", {"id", "last_name"}) // .values({2, "clooney"}) // .execute(db); // REQUIRE(res.is_ok()); -// REQUIRE(*res == 1); +// REQUIRE(res->affected_rows == 1); // // auto result = query::select({"id", "first_name", "last_name"}) // .from("person") diff --git a/test/backends/QueryRecordTest.cpp b/test/backends/QueryRecordTest.cpp index a83e329..2d42731 100644 --- a/test/backends/QueryRecordTest.cpp +++ b/test/backends/QueryRecordTest.cpp @@ -52,7 +52,7 @@ TEST_CASE_METHOD(QueryFixture, "Test all data types for record", "[query][record }) .execute(db); REQUIRE(res.is_ok()); - REQUIRE(res.value() == 0); + REQUIRE(res->affected_rows == 0); check_table_exists("types"); tables_to_drop.emplace("types"); @@ -95,7 +95,7 @@ TEST_CASE_METHOD(QueryFixture, "Test all data types for record", "[query][record .values({id, c, s, i, ll, uc, us, ui, ull, b, f, d, str, varchar, md, mt, bin}) .execute(db); REQUIRE(res.is_ok()); - REQUIRE(res.value() == 1); + REQUIRE(res->affected_rows == 1); auto result = query::select(cols) .from("types") @@ -139,7 +139,7 @@ TEST_CASE_METHOD(QueryFixture, "Create and drop table statement", "[query][recor }) .execute(db); REQUIRE(res.is_ok()); - REQUIRE(res.value() == 0); + REQUIRE(res->affected_rows == 0); check_table_exists("person"); tables_to_drop.emplace("person"); @@ -148,7 +148,7 @@ TEST_CASE_METHOD(QueryFixture, "Create and drop table statement", "[query][recor .table("person") .execute(db); REQUIRE(res.is_ok()); - REQUIRE(res.value() == 0); + REQUIRE(res->affected_rows == 0); check_table_not_exists("person"); } @@ -167,7 +167,7 @@ TEST_CASE_METHOD(QueryFixture, "Create and drop table statement with foreign key }) .execute(db); REQUIRE(res.is_ok()); - REQUIRE(res.value() == 0); + REQUIRE(res->affected_rows == 0); check_table_exists("airplane"); tables_to_drop.emplace("airplane"); @@ -185,7 +185,7 @@ TEST_CASE_METHOD(QueryFixture, "Create and drop table statement with foreign key }) .execute(db); REQUIRE(res.is_ok()); - REQUIRE(res.value() == 0); + REQUIRE(res->affected_rows == 0); check_table_exists("flight"); tables_to_drop.emplace("flight"); @@ -194,7 +194,7 @@ TEST_CASE_METHOD(QueryFixture, "Create and drop table statement with foreign key .table("flight") .execute(db); REQUIRE(res.is_ok()); - REQUIRE(res.value() == 0); + REQUIRE(res->affected_rows == 0); check_table_not_exists("flight"); @@ -202,7 +202,7 @@ TEST_CASE_METHOD(QueryFixture, "Create and drop table statement with foreign key .table("airplane") .execute(db); REQUIRE(res.is_ok()); - REQUIRE(res.value() == 0); + REQUIRE(res->affected_rows == 0); check_table_not_exists("airplane"); } @@ -220,7 +220,7 @@ TEST_CASE_METHOD(QueryFixture, "Execute insert record statement", "[query][recor }) .execute(db); REQUIRE(res.is_ok()); - REQUIRE(res.value() == 0); + REQUIRE(res->affected_rows == 0); tables_to_drop.emplace("person"); res = query::insert() @@ -228,7 +228,7 @@ TEST_CASE_METHOD(QueryFixture, "Execute insert record statement", "[query][recor .values({7, "george", 45}) .execute(db); REQUIRE(res.is_ok()); - REQUIRE(res.value() == 1); + REQUIRE(res->affected_rows == 1); auto result = query::select({"id", "name", "age"}) .from("person") @@ -263,7 +263,7 @@ TEST_CASE_METHOD(QueryFixture, "Execute insert record statement with foreign key }) .execute(db); REQUIRE(res.is_ok()); - REQUIRE(res.value() == 0); + REQUIRE(res->affected_rows == 0); tables_to_drop.emplace("airplane"); res = query::create() @@ -279,7 +279,7 @@ TEST_CASE_METHOD(QueryFixture, "Execute insert record statement with foreign key }) .execute(db); REQUIRE(res.is_ok()); - REQUIRE(res.value() == 0); + REQUIRE(res->affected_rows == 0); tables_to_drop.emplace("flight"); std::vector> values_list{ @@ -294,7 +294,7 @@ TEST_CASE_METHOD(QueryFixture, "Execute insert record statement with foreign key .values(std::move(values)) .execute(db); REQUIRE(res.is_ok()); - REQUIRE(res.value() == 1); + REQUIRE(res->affected_rows == 1); } auto count = query::select({count_all()}) @@ -309,7 +309,7 @@ TEST_CASE_METHOD(QueryFixture, "Execute insert record statement with foreign key .values({4, 1, "George"}) .execute(db); REQUIRE(res.is_ok()); - REQUIRE(res.value() == 1); + REQUIRE(res->affected_rows == 1); } TEST_CASE_METHOD(QueryFixture, "Execute update record statement", "[query][record]") @@ -326,7 +326,7 @@ TEST_CASE_METHOD(QueryFixture, "Execute update record statement", "[query][recor }) .execute(db); REQUIRE(res.is_ok()); - REQUIRE(res.value() == 0); + REQUIRE(res->affected_rows == 0); tables_to_drop.emplace("person"); res = query::insert() @@ -335,7 +335,7 @@ TEST_CASE_METHOD(QueryFixture, "Execute update record statement", "[query][recor .execute(db); REQUIRE(res.is_ok()); - REQUIRE(res.value() == 1); + REQUIRE(res->affected_rows == 1); res = query::update("person") .set({{"id", 7}, @@ -344,7 +344,7 @@ TEST_CASE_METHOD(QueryFixture, "Execute update record statement", "[query][recor .where("id"_col == 7) .execute(db); REQUIRE(res.is_ok()); - REQUIRE(res.value() == 1); + REQUIRE(res->affected_rows == 1); auto result = query::select({"id", "name", "age"}) .from("person") @@ -379,7 +379,7 @@ TEST_CASE_METHOD(QueryFixture, "Execute select statement", "[query][record]") }) .execute(db); REQUIRE(res.is_ok()); - REQUIRE(res.value() == 0); + REQUIRE(res->affected_rows == 0); tables_to_drop.emplace("person"); std::vector> values_list{ @@ -395,7 +395,7 @@ TEST_CASE_METHOD(QueryFixture, "Execute select statement", "[query][record]") .values(std::move(values)) .execute(db); REQUIRE(res.is_ok()); - REQUIRE(res.value() == 1); + REQUIRE(res->affected_rows == 1); } auto result = query::select({"id", "name", "age"}) @@ -439,7 +439,7 @@ TEST_CASE_METHOD(QueryFixture, "Execute select statement with order by", "[query }) .execute(db); REQUIRE(res.is_ok()); - REQUIRE(res.value() == 0); + REQUIRE(res->affected_rows == 0); tables_to_drop.emplace("person"); std::vector> values_list{ @@ -455,7 +455,7 @@ TEST_CASE_METHOD(QueryFixture, "Execute select statement with order by", "[query .values(std::move(values)) .execute(db); REQUIRE(res.is_ok()); - REQUIRE(res.value() == 1); + REQUIRE(res->affected_rows == 1); } auto result = query::select({"id", "name", "age"}) @@ -485,7 +485,7 @@ TEST_CASE_METHOD(QueryFixture, "Execute select statement with group by and order }) .execute(db); REQUIRE(res.is_ok()); - REQUIRE(*res == 0); + REQUIRE(res->affected_rows == 0); tables_to_drop.emplace("person"); std::vector> values_list{ @@ -503,7 +503,7 @@ TEST_CASE_METHOD(QueryFixture, "Execute select statement with group by and order .values(std::move(values)) .execute(db); REQUIRE(res.is_ok()); - REQUIRE(res.value() == 1); + REQUIRE(res->affected_rows == 1); } auto result = query::select({count("age").as("age_count"), "age"}) @@ -538,7 +538,7 @@ TEST_CASE_METHOD(QueryFixture, "Execute delete statement", "[query][record]") { }) .execute(db); REQUIRE(res.is_ok()); - REQUIRE(*res == 0); + REQUIRE(res->affected_rows == 0); tables_to_drop.emplace("person"); res = query::insert() @@ -546,13 +546,13 @@ TEST_CASE_METHOD(QueryFixture, "Execute delete statement", "[query][record]") { .values({1, "george", 45}) .execute(db); REQUIRE(res.is_ok()); - REQUIRE(*res == 1); + REQUIRE(res->affected_rows == 1); res = query::insert() .into("person", {"id", "name", "age"}) .values({2, "jane", 45}) .execute(db); REQUIRE(res.is_ok()); - REQUIRE(*res == 1); + REQUIRE(res->affected_rows == 1); auto count = query::select({count_all()}) .from("person") @@ -566,7 +566,7 @@ TEST_CASE_METHOD(QueryFixture, "Execute delete statement", "[query][record]") { .where("id"_col == 1) .execute(db); REQUIRE(res.is_ok()); - REQUIRE(*res == 1); + REQUIRE(res->affected_rows == 1); count = query::select({count_all()}) .from("person") @@ -584,7 +584,7 @@ TEST_CASE_METHOD(QueryFixture, "Test quoted identifier record", "[query][record] }) .execute(db); REQUIRE(res.is_ok()); - REQUIRE(*res == 0); + REQUIRE(res->affected_rows == 0); tables_to_drop.emplace("quotes"); // check table description @@ -608,7 +608,7 @@ TEST_CASE_METHOD(QueryFixture, "Test quoted identifier record", "[query][record] .values({"Berlin", "London"}) .execute(db); REQUIRE(res.is_ok()); - REQUIRE(*res == 1); + REQUIRE(res->affected_rows == 1); auto result = query::select({"from", "to"}) .from("quotes") @@ -624,7 +624,7 @@ TEST_CASE_METHOD(QueryFixture, "Test quoted identifier record", "[query][record] .where("from"_col == "Berlin") .execute(db); REQUIRE(res.is_ok()); - REQUIRE(*res == 1); + REQUIRE(res->affected_rows == 1); result = query::select({"from", "to"}) .from("quotes") @@ -649,7 +649,7 @@ TEST_CASE_METHOD(QueryFixture, "Test create record", "[query][record][create]") }) .execute(db); REQUIRE(res.is_ok()); - REQUIRE(*res == 0); + REQUIRE(res->affected_rows == 0); tables_to_drop.emplace("person"); check_table_exists("person"); @@ -676,7 +676,7 @@ TEST_CASE_METHOD(QueryFixture, "Test insert record", "[query][record][insert]") }) .execute(db); REQUIRE(res.is_ok()); - REQUIRE(*res == 0); + REQUIRE(res->affected_rows == 0); tables_to_drop.emplace("person"); check_table_exists("person"); @@ -686,7 +686,7 @@ TEST_CASE_METHOD(QueryFixture, "Test insert record", "[query][record][insert]") .values({1, "hans", 45}) .execute(db); REQUIRE(res.is_ok()); - REQUIRE(*res == 1); + REQUIRE(res->affected_rows == 1); auto row = query::select({"id", "name", "age"}) .from("person") @@ -713,7 +713,7 @@ TEST_CASE_METHOD(QueryFixture, "Test update record", "[query][record][update]") }) .execute(db); REQUIRE(res.is_ok()); - REQUIRE(*res == 0); + REQUIRE(res->affected_rows == 0); tables_to_drop.emplace("person"); check_table_exists("person"); @@ -723,7 +723,7 @@ TEST_CASE_METHOD(QueryFixture, "Test update record", "[query][record][update]") .values({1, "hans", 45}) .execute(db); REQUIRE(res.is_ok()); - REQUIRE(*res == 1); + REQUIRE(res->affected_rows == 1); auto row = query::select({"id", "name", "age"}) .from("person") @@ -740,7 +740,7 @@ TEST_CASE_METHOD(QueryFixture, "Test update record", "[query][record][update]") .where("name"_col == "hans") .execute(db); REQUIRE(res.is_ok()); - REQUIRE(*res == 1); + REQUIRE(res->affected_rows == 1); row = query::select({"id", "name", "age"}) .from("person") @@ -771,7 +771,7 @@ TEST_CASE_METHOD(QueryFixture, "Test prepared record statement", "[query][record auto res = stmt->execute(); REQUIRE(res.is_ok()); - REQUIRE(*res == 0); + REQUIRE(res->affected_rows == 0); check_table_exists("person"); const std::vector cols = {"id", "name", "age"}; @@ -795,7 +795,7 @@ TEST_CASE_METHOD(QueryFixture, "Test scalar result", "[query][record][scalar][re }) .execute(db); REQUIRE(res.is_ok()); - REQUIRE(*res == 0); + REQUIRE(res->affected_rows == 0); check_table_exists("person"); tables_to_drop.emplace("person"); @@ -808,7 +808,7 @@ TEST_CASE_METHOD(QueryFixture, "Test scalar result", "[query][record][scalar][re .values({id}) .execute(db); REQUIRE(res.is_ok()); - REQUIRE(*res == 1); + REQUIRE(res->affected_rows == 1); } auto stmt = query::select({"id"}) diff --git a/test/backends/QueryStatementTests.cpp b/test/backends/QueryStatementTests.cpp index 313569d..81951a2 100644 --- a/test/backends/QueryStatementTests.cpp +++ b/test/backends/QueryStatementTests.cpp @@ -32,7 +32,7 @@ TEST_CASE_METHOD(QueryFixture, "Test create statement", "[query][statement][crea auto res = stmt->execute(); REQUIRE(res.is_ok()); - REQUIRE(*res == 0); + REQUIRE(res->affected_rows == 0); tables_to_drop.emplace("persons"); check_table_exists("persons"); @@ -63,7 +63,7 @@ TEST_CASE_METHOD(QueryFixture, "Test insert statement", "[query][statement][inse auto res = stmt->bind(george) .execute(); REQUIRE(res.is_ok()); - REQUIRE(*res == 1); + REQUIRE(res->affected_rows == 1); auto row = query::select({PERSON.id, PERSON.name, PERSON.age, PERSON.image}) .from(PERSON) @@ -94,7 +94,7 @@ TEST_CASE_METHOD(QueryFixture, "Test update statement", "[query][statement][upda auto res = stmt->bind(george) .execute(); REQUIRE(res.is_ok()); - REQUIRE(*res == 1); + REQUIRE(res->affected_rows == 1); auto row = query::select({PERSON.id, PERSON.name, PERSON.age, PERSON.image}) .from(PERSON) @@ -119,7 +119,7 @@ TEST_CASE_METHOD(QueryFixture, "Test update statement", "[query][statement][upda .bind(4, george.id) .execute(); REQUIRE(res.is_ok()); - REQUIRE(*res == 1); + REQUIRE(res->affected_rows == 1); row = query::select({PERSON.id, PERSON.name, PERSON.age, PERSON.image}) .from(PERSON) @@ -156,7 +156,7 @@ TEST_CASE_METHOD(QueryFixture, "Test delete statement", "[query][statement][dele auto res = stmt->bind(p) .execute(); REQUIRE(res.is_ok()); - REQUIRE(*res == 1); + REQUIRE(res->affected_rows == 1); stmt->reset(); } @@ -187,7 +187,7 @@ TEST_CASE_METHOD(QueryFixture, "Test delete statement", "[query][statement][dele auto res = stmt->bind(0, "jane") .execute(); REQUIRE(res.is_ok()); - REQUIRE(*res == 1); + REQUIRE(res->affected_rows == 1); select_stmt->reset(); auto row = select_stmt->bind(0, "jane") @@ -198,7 +198,7 @@ TEST_CASE_METHOD(QueryFixture, "Test delete statement", "[query][statement][dele res = stmt->bind(0, "merlin") .execute(); REQUIRE(res.is_ok()); - REQUIRE(*res == 1); + REQUIRE(res->affected_rows == 1); select_stmt->reset(); row = select_stmt->bind(0, "merlin") @@ -229,7 +229,7 @@ TEST_CASE_METHOD(QueryFixture, "Test reuse prepared statement", "[query][stateme auto res = stmt->bind(p) .execute(); REQUIRE(res.is_ok()); - REQUIRE(*res == 1); + REQUIRE(res->affected_rows == 1); stmt->reset(); } diff --git a/test/backends/QueryTest.cpp b/test/backends/QueryTest.cpp index adca692..933994c 100644 --- a/test/backends/QueryTest.cpp +++ b/test/backends/QueryTest.cpp @@ -51,7 +51,7 @@ TEST_CASE_METHOD(QueryFixture, "Execute select statement with where clause", "[q .values(george) .execute(db); REQUIRE(res.is_ok()); - REQUIRE(*res == 1); + REQUIRE(res->affected_rows == 1); // fetch person as record auto result_record = query::select({PERSON.id, PERSON.name, PERSON.age, PERSON.image}) @@ -100,7 +100,7 @@ TEST_CASE_METHOD(QueryFixture, "Execute insert statement", "[query][insert]") { }) .execute(db); REQUIRE(res.is_ok()); - REQUIRE(*res == 0); + REQUIRE(res->affected_rows == 0); REQUIRE(db.exists("person")); tables_to_drop.emplace("person"); @@ -110,7 +110,7 @@ TEST_CASE_METHOD(QueryFixture, "Execute insert statement", "[query][insert]") { .values({7, "george", "green"}) .execute(db); REQUIRE(res.is_ok()); - REQUIRE(*res == 1); + REQUIRE(res->affected_rows == 1); // fetch person as record auto result_record = query::select({"id", "name", "color"}) @@ -154,7 +154,7 @@ TEST_CASE_METHOD(QueryFixture, "Select statement with foreign key", "[query][for .values(*plane) .execute(db); REQUIRE(res.is_ok()); - REQUIRE(*res == 1); + REQUIRE(res->affected_rows == 1); } auto count = query::select({count_all()}) @@ -171,7 +171,7 @@ TEST_CASE_METHOD(QueryFixture, "Select statement with foreign key", "[query][for .values(f4711) .execute(db); REQUIRE(res.is_ok()); - REQUIRE(*res == 1); + REQUIRE(res->affected_rows == 1); auto f = query::select({FLIGHT.id, FLIGHT.airplane_id, FLIGHT.pilot_name}) .from(FLIGHT) @@ -204,7 +204,7 @@ TEST_CASE_METHOD(QueryFixture, "Select statement with foreign key and join_left" .values(*plane) .execute(db); REQUIRE(res.is_ok()); - REQUIRE(*res == 1); + REQUIRE(res->affected_rows == 1); } auto count = query::select({count_all()}) @@ -225,7 +225,7 @@ TEST_CASE_METHOD(QueryFixture, "Select statement with foreign key and join_left" .values(*f) .execute(db); REQUIRE(res.is_ok()); - REQUIRE(*res == 1); + REQUIRE(res->affected_rows == 1); } auto flight_result = query::select({FLIGHT.id, FLIGHT.airplane_id, FLIGHT.pilot_name}) @@ -285,7 +285,7 @@ TEST_CASE_METHOD(QueryFixture, "Select statement with foreign key and for single .values(*plane) .execute(db); REQUIRE(res.is_ok()); - REQUIRE(*res == 1); + REQUIRE(res->affected_rows == 1); } auto count = query::select({count_all()}) @@ -308,7 +308,7 @@ TEST_CASE_METHOD(QueryFixture, "Select statement with foreign key and for single .values(*f) .execute(db); REQUIRE(res.is_ok()); - REQUIRE(*res == 1); + REQUIRE(res->affected_rows == 1); } auto flight_result = query::select({FLIGHT.id, FLIGHT.airplane_id, FLIGHT.pilot_name}) @@ -368,7 +368,7 @@ TEST_CASE_METHOD(QueryFixture, "Select statement with many to many relationship" .values(i) .execute(db); REQUIRE(res.is_ok()); - REQUIRE(*res == 1); + REQUIRE(res->affected_rows == 1); } std::vector recipes{ @@ -383,7 +383,7 @@ TEST_CASE_METHOD(QueryFixture, "Select statement with many to many relationship" .values(r) .execute(db); REQUIRE(res.is_ok()); - REQUIRE(*res == 1); + REQUIRE(res->affected_rows == 1); } std::vector> recipe_ingredients { @@ -403,7 +403,7 @@ TEST_CASE_METHOD(QueryFixture, "Select statement with many to many relationship" .values({recipe_id, ingredient_id}) .execute(db); REQUIRE(res.is_ok()); - REQUIRE(*res == 1); + REQUIRE(res->affected_rows == 1); } @@ -510,7 +510,7 @@ TEST_CASE_METHOD(QueryFixture, "Test load entity with eager has many relation", .values(*sh) .execute(db); REQUIRE(res.is_ok()); - REQUIRE(*res == 1); + REQUIRE(res->affected_rows == 1); } auto count = query::select({count_all()}) @@ -533,7 +533,7 @@ TEST_CASE_METHOD(QueryFixture, "Test load entity with eager has many relation", .values(*pkg) .execute(db); REQUIRE(res.is_ok()); - REQUIRE(*res == 1); + REQUIRE(res->affected_rows == 1); } count = query::select({count_all()}) @@ -621,7 +621,7 @@ TEST_CASE_METHOD(QueryFixture, "Test load entity with lazy has many relation", " .values(*a) .execute(db); REQUIRE(res.is_ok()); - REQUIRE(*res == 1); + REQUIRE(res->affected_rows == 1); } auto count = query::select({count_all()}) @@ -636,7 +636,7 @@ TEST_CASE_METHOD(QueryFixture, "Test load entity with lazy has many relation", " .values(*b) .execute(db); REQUIRE(res.is_ok()); - REQUIRE(*res == 1); + REQUIRE(res->affected_rows == 1); } count = query::select({count_all()}) @@ -698,7 +698,7 @@ TEST_CASE_METHOD(QueryFixture, "Test load entity with lazy belongs to relation", .values(*dep) .execute(db); REQUIRE(res.is_ok()); - REQUIRE(*res == 1); + REQUIRE(res->affected_rows == 1); } auto count = query::select({count_all()}) @@ -713,7 +713,7 @@ TEST_CASE_METHOD(QueryFixture, "Test load entity with lazy belongs to relation", .values(*emp) .execute(db); REQUIRE(res.is_ok()); - REQUIRE(*res == 1); + REQUIRE(res->affected_rows == 1); } count = query::select({count_all()}) @@ -769,7 +769,7 @@ TEST_CASE_METHOD(QueryFixture, "Test load entity with eager belongs to relation" .values(*a) .execute(db); REQUIRE(res.is_ok()); - REQUIRE(*res == 1); + REQUIRE(res->affected_rows == 1); } auto count = query::select({count_all()}) @@ -784,7 +784,7 @@ TEST_CASE_METHOD(QueryFixture, "Test load entity with eager belongs to relation" .values(*b) .execute(db); REQUIRE(res.is_ok()); - REQUIRE(*res == 1); + REQUIRE(res->affected_rows == 1); } count = query::select({count_all()}) @@ -845,7 +845,7 @@ TEST_CASE_METHOD(QueryFixture, "Test load entity with eager has many to many rel .values(i) .execute(db); REQUIRE(res.is_ok()); - REQUIRE(*res == 1); + REQUIRE(res->affected_rows == 1); } std::vector recipes{ @@ -860,7 +860,7 @@ TEST_CASE_METHOD(QueryFixture, "Test load entity with eager has many to many rel .values(r) .execute(db); REQUIRE(res.is_ok()); - REQUIRE(*res == 1); + REQUIRE(res->affected_rows == 1); } std::vector> recipe_ingredients { @@ -880,7 +880,7 @@ TEST_CASE_METHOD(QueryFixture, "Test load entity with eager has many to many rel .values({recipe_id, ingredient_id}) .execute(db); REQUIRE(res.is_ok()); - REQUIRE(*res == 1); + REQUIRE(res->affected_rows == 1); } const auto r = RECIPE.as("r"); diff --git a/test/backends/StatementTest.cpp b/test/backends/StatementTest.cpp index 71440e6..524ab7a 100644 --- a/test/backends/StatementTest.cpp +++ b/test/backends/StatementTest.cpp @@ -49,7 +49,7 @@ TEST_CASE_METHOD(StatementTestFixture, "Create prepared statement", "[statement] for (const auto &plane: planes) { auto res = stmt->bind(plane).execute(); REQUIRE(res.is_ok()); - REQUIRE(*res == 1); + REQUIRE(res->affected_rows == 1); stmt->reset(); } @@ -73,7 +73,7 @@ TEST_CASE_METHOD(StatementTestFixture, "Create prepared statement", "[statement] .values(plane) .execute(db); REQUIRE(res.is_ok()); - REQUIRE(*res == 1); + REQUIRE(res->affected_rows == 1); } auto stmt = query::select({AIRPLANE.id, AIRPLANE.brand, AIRPLANE.model}) diff --git a/test/backends/TypeTraitsTest.cpp b/test/backends/TypeTraitsTest.cpp index bbecce8..cc49762 100644 --- a/test/backends/TypeTraitsTest.cpp +++ b/test/backends/TypeTraitsTest.cpp @@ -36,7 +36,7 @@ TEST_CASE_METHOD(TypeTraitsTestFixture, "Special handling of attributes with typ .values(loc) .execute(db); REQUIRE(res.is_ok()); - REQUIRE(*res == 1); + REQUIRE(res->affected_rows == 1); auto result = query::select(generator::columns(repo)) .from("location") @@ -61,7 +61,7 @@ TEST_CASE_METHOD(TypeTraitsTestFixture, "Special handling of attributes with typ auto res = stmt->bind(loc) .execute(); REQUIRE(res.is_ok()); - REQUIRE(*res == 1); + REQUIRE(res->affected_rows == 1); auto result = query::select(generator::columns(repo)) .from("location")