column, placeholder and column_value generator progress

This commit is contained in:
Sascha Kühl
2025-11-12 15:53:03 +01:00
parent 9e76203bc9
commit 1c5b2b21b0
16 changed files with 93 additions and 236 deletions
+15 -16
View File
@@ -2,9 +2,8 @@
#include "matador/object/attribute_definition.hpp"
#include "matador/sql/column_generator.hpp"
#include "matador/query/criteria.hpp"
#include "matador/query/generator.hpp"
#include "matador/query/query.hpp"
#include "QueryFixture.hpp"
@@ -58,14 +57,14 @@ TEST_CASE_METHOD(QueryFixture, "Execute select statement with where clause", "[q
george.image.emplace_back(37);
res = query::insert()
.into("person", column_generator::generate<person>(repo, true))
.into("person", generator::columns<person>(repo))
.values(george)
.execute(db);
REQUIRE(res.is_ok());
REQUIRE(*res == 1);
// fetch person as record
auto result_record = query::select(column_generator::generate<person>(repo, true))
auto result_record = query::select(generator::columns<person>(repo))
.from("person")
.where("id"_col == 7)
.fetch_all(db);
@@ -85,7 +84,7 @@ TEST_CASE_METHOD(QueryFixture, "Execute select statement with where clause", "[q
}
// fetch person as person
auto result_person = query::select(column_generator::generate<person>(repo, true))
auto result_person = query::select(generator::columns<person>(repo))
.from("person")
.where("id"_col == 7)
.fetch_all<person>(db);
@@ -171,7 +170,7 @@ TEST_CASE_METHOD(QueryFixture, "Select statement with foreign key", "[query][for
for (const auto &plane: planes) {
res = query::insert()
.into("airplane", column_generator::generate<airplane>(repo, true))
.into("airplane", generator::columns<airplane>(repo))
.values(*plane)
.execute(db);
REQUIRE(res.is_ok());
@@ -187,13 +186,13 @@ TEST_CASE_METHOD(QueryFixture, "Select statement with foreign key", "[query][for
flight f4711{4, planes.at(1), "hans"};
res = query::insert()
.into("flight", column_generator::generate<flight>(repo, true))
.into("flight", generator::columns<flight>(repo))
.values(f4711)
.execute(db);
REQUIRE(res.is_ok());
REQUIRE(*res == 1);
auto f = query::select(column_generator::generate<flight>(repo, true))
auto f = query::select(generator::columns<flight>(repo))
.from("flight")
.fetch_one(db);
REQUIRE(f.is_ok());
@@ -234,7 +233,7 @@ TEST_CASE_METHOD(QueryFixture, "Select statement with foreign key and join_left"
for (const auto &plane: planes) {
res = query::insert()
.into("airplane", column_generator::generate<airplane>(repo, true))
.into("airplane", generator::columns<airplane>(repo))
.values(*plane)
.execute(db);
REQUIRE(res.is_ok());
@@ -262,7 +261,7 @@ TEST_CASE_METHOD(QueryFixture, "Select statement with foreign key and join_left"
REQUIRE(*res == 1);
}
auto f = query::select(column_generator::generate<flight>(repo, true))
auto f = query::select(generator::columns<flight>(repo))
.from("flight")
.fetch_one(db);
REQUIRE(f.is_ok());
@@ -324,7 +323,7 @@ TEST_CASE_METHOD(QueryFixture, "Select statement with foreign key and for single
for (const auto &plane: planes) {
res = query::insert()
.into("airplane", column_generator::generate<airplane>(repo, true))
.into("airplane", generator::columns<airplane>(repo))
.values(*plane)
.execute(db);
REQUIRE(res.is_ok());
@@ -347,14 +346,14 @@ TEST_CASE_METHOD(QueryFixture, "Select statement with foreign key and for single
for (const auto &f: flights) {
res = query::insert()
.into("flight", column_generator::generate<flight>(repo, true))
.into("flight", generator::columns<flight>(repo))
.values(*f)
.execute(db);
REQUIRE(res.is_ok());
REQUIRE(*res == 1);
}
auto f = query::select(column_generator::generate<flight>(repo, true))
auto f = query::select(generator::columns<flight>(repo))
.from("flight")
.fetch_one(db);
REQUIRE(f.is_ok());
@@ -426,7 +425,7 @@ TEST_CASE_METHOD(QueryFixture, "Select statement with many to many relationship"
for (const auto &i: ingredients) {
res = query::insert()
.into("ingredients", column_generator::generate<ingredient>(repo, true))
.into("ingredients", generator::columns<ingredient>(repo))
.values(i)
.execute(db);
REQUIRE(res.is_ok());
@@ -441,7 +440,7 @@ TEST_CASE_METHOD(QueryFixture, "Select statement with many to many relationship"
for (const auto &r: recipes) {
res = query::insert()
.into("recipes", column_generator::generate<recipe>(repo, true))
.into("recipes", generator::columns<recipe>(repo))
.values(r)
.execute(db);
REQUIRE(res.is_ok());
@@ -461,7 +460,7 @@ TEST_CASE_METHOD(QueryFixture, "Select statement with many to many relationship"
for (const auto & [recipe_id, ingredient_id]: recipe_ingredients) {
res = query::insert()
.into("recipe_ingredients", column_generator::generate(repo, "recipe_ingredients", true))
.into("recipe_ingredients", generator::columns<recipe_ingredient>(repo))
.values({recipe_id, ingredient_id})
.execute(db);
REQUIRE(res.is_ok());