From 8c8423bf64b77dedfa98ee7c499b712aab9a40b3 Mon Sep 17 00:00:00 2001 From: sascha Date: Mon, 18 May 2026 09:03:41 +0200 Subject: [PATCH] fixed has one definitions --- test/models/order_details.hpp | 5 +++-- test/orm/query/ColumnGeneratorTest.cpp | 17 +---------------- test/orm/query/SessionQueryBuilderTest.cpp | 5 ++--- 3 files changed, 6 insertions(+), 21 deletions(-) diff --git a/test/models/order_details.hpp b/test/models/order_details.hpp index 91a7420..67499bb 100644 --- a/test/models/order_details.hpp +++ b/test/models/order_details.hpp @@ -3,6 +3,7 @@ #include "product.hpp" +#include "matador/object/collection.hpp" #include "matador/object/object_ptr.hpp" #include "matador/utils/foreign_attributes.hpp" @@ -13,14 +14,14 @@ struct order; struct order_details { unsigned int order_details_id; object::object_ptr order_; - object::object_ptr product_; + object::collection> products_; template void process(Operator &op) { namespace field = matador::access; field::primary_key(op, "order_details_id", order_details_id); field::belongs_to(op, "order_id", order_, utils::CascadeNoneFetchLazy); - field::has_one(op, "product_id", product_, utils::CascadeNoneFetchLazy); + field::has_many(op, "order_products", products_, "product_id", utils::CascadeNoneFetchLazy); } }; } diff --git a/test/orm/query/ColumnGeneratorTest.cpp b/test/orm/query/ColumnGeneratorTest.cpp index f22ab48..6222aa0 100644 --- a/test/orm/query/ColumnGeneratorTest.cpp +++ b/test/orm/query/ColumnGeneratorTest.cpp @@ -1,17 +1,9 @@ #include -#include "matador/sql/backend_provider.hpp" -#include "matador/sql/connection_pool.hpp" -#include "matador/sql/interface/connection_impl.hpp" - #include "matador/query/generator.hpp" #include "matador/query/table.hpp" #include "matador/query/schema.hpp" -#include "matador/object/repository.hpp" - -#include "../backend/test_backend_service.hpp" - #include "../test/models/product.hpp" #include "../test/models/order.hpp" #include "../test/models/book.hpp" @@ -23,8 +15,6 @@ using namespace matador::sql; TEST_CASE("Generate columns from object", "[column][generator]") { using namespace matador::test; - backend_provider::instance().register_backend("noop", std::make_unique()); - connection_pool pool("noop://noop.db", 4); schema s; auto result = s.attach("product"); @@ -53,8 +43,6 @@ TEST_CASE("Generate columns from object", "[column][generator]") { TEST_CASE("Generate columns for object with has many relation", "[column][generator][relation]") { using namespace matador::test; - backend_provider::instance().register_backend("noop", std::make_unique()); - connection_pool pool("noop://noop.db", 4); schema s; auto result = s.attach("supplier") @@ -82,8 +70,7 @@ TEST_CASE("Generate columns for object with has many relation", "[column][genera { &order_table, "ship_postal_code", "c11" }, { &order_table, "ship_country", "c12" }, { &order_details_table, "order_details_id", "c13" }, - { &order_details_table, "order_id", "c14" }, - { &order_details_table, "product_id", "c15" } + { &order_details_table, "order_id", "c14" } }; REQUIRE(!columns.empty()); REQUIRE(columns.size() == expected_columns.size()); @@ -96,8 +83,6 @@ TEST_CASE("Generate columns for object with has many relation", "[column][genera TEST_CASE("Generate columns for object with eager foreign key relation", "[column][generator][eager]") { using namespace matador::test; - backend_provider::instance().register_backend("noop", std::make_unique()); - connection_pool pool("noop://noop.db", 4); schema s; auto result = s.attach("books") diff --git a/test/orm/query/SessionQueryBuilderTest.cpp b/test/orm/query/SessionQueryBuilderTest.cpp index 5144adb..a42f764 100644 --- a/test/orm/query/SessionQueryBuilderTest.cpp +++ b/test/orm/query/SessionQueryBuilderTest.cpp @@ -188,7 +188,7 @@ TEST_CASE("Create sql query data for entity with eager has many belongs to", "[q REQUIRE(q.is_ok()); const auto sql = q->str(db); - const std::string expected_sql = R"(SELECT "t01"."order_id", "t01"."order_date", "t01"."required_date", "t01"."shipped_date", "t01"."ship_via", "t01"."freight", "t01"."ship_name", "t01"."ship_address", "t01"."ship_city", "t01"."ship_region", "t01"."ship_postal_code", "t01"."ship_country", "t02"."order_details_id", "t02"."order_id", "t02"."product_id" FROM "orders" "t01" LEFT JOIN "order_details" "t02" ON "t01"."order_id" = "t02"."order_id" WHERE "t01"."order_id" = ? ORDER BY "t01"."order_id" ASC)"; + const std::string expected_sql = R"(SELECT "t01"."order_id", "t01"."order_date", "t01"."required_date", "t01"."shipped_date", "t01"."ship_via", "t01"."freight", "t01"."ship_name", "t01"."ship_address", "t01"."ship_city", "t01"."ship_region", "t01"."ship_postal_code", "t01"."ship_country", "t02"."order_details_id", "t02"."order_id" FROM "orders" "t01" LEFT JOIN "order_details" "t02" ON "t01"."order_id" = "t02"."order_id" WHERE "t01"."order_id" = ? ORDER BY "t01"."order_id" ASC)"; REQUIRE(expected_sql == sql); const auto& data = eqb.query_data(); @@ -211,8 +211,7 @@ TEST_CASE("Create sql query data for entity with eager has many belongs to", "[q { &orders, "ship_postal_code", "c11" }, { &orders, "ship_country", "c12" }, { &order_details, "order_details_id", "c13" }, - { &order_details, "order_id", "c14" }, - { &order_details, "product_id", "c15" } + { &order_details, "order_id", "c14" } }; REQUIRE(data.columns.size() == expected_columns.size()); for (size_t i = 0; i != expected_columns.size(); ++i) {