From a146dce32117a27f5e81c967d62d033d7d798753 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sascha=20K=C3=BChl?= Date: Fri, 21 Nov 2025 09:24:53 +0100 Subject: [PATCH] renamed class attribute_definition_generator to attribute_generator --- ..._generator.hpp => attribute_generator.hpp} | 19 ++++++++------- include/matador/object/repository.hpp | 2 +- include/matador/object/repository_node.hpp | 6 ++--- .../query_create_intermediate.hpp | 4 ++-- source/core/CMakeLists.txt | 4 ++-- .../object/attribute_definition_generator.cpp | 23 ------------------- source/core/object/attribute_generator.cpp | 23 +++++++++++++++++++ .../AttributeDefinitionGeneratorTest.cpp | 6 ++--- test/orm/query/QueryBuilderTest.cpp | 2 +- 9 files changed, 44 insertions(+), 45 deletions(-) rename include/matador/object/{attribute_definition_generator.hpp => attribute_generator.hpp} (89%) delete mode 100644 source/core/object/attribute_definition_generator.cpp create mode 100644 source/core/object/attribute_generator.cpp diff --git a/include/matador/object/attribute_definition_generator.hpp b/include/matador/object/attribute_generator.hpp similarity index 89% rename from include/matador/object/attribute_definition_generator.hpp rename to include/matador/object/attribute_generator.hpp index 22b029e..c3f6d3d 100644 --- a/include/matador/object/attribute_definition_generator.hpp +++ b/include/matador/object/attribute_generator.hpp @@ -52,18 +52,17 @@ private: utils::basic_type type_{}; }; -class attribute_definition_generator final { +class attribute_generator final { private: - attribute_definition_generator(std::vector &columns, const repository &repo); + attribute_generator(std::vector &columns, const repository &repo); public: - ~attribute_definition_generator() = default; + ~attribute_generator() = default; template < class Type > - static std::vector generate(const repository &repo) - { + static std::vector generate(const repository &repo) { std::vector columns; - attribute_definition_generator gen(columns, repo); + attribute_generator gen(columns, repo); Type obj; access::process(gen, obj); return columns; @@ -72,7 +71,7 @@ public: template < class Type > static std::vector generate(const Type& obj, const repository &repo) { std::vector columns; - attribute_definition_generator gen(columns, repo); + attribute_generator gen(columns, repo); access::process(gen, obj); return columns; } @@ -133,17 +132,17 @@ private: }; template -void attribute_definition_generator::on_primary_key(const char *id, ValueType &x, const utils::primary_key_attribute& attr) { +void attribute_generator::on_primary_key(const char *id, ValueType &x, const utils::primary_key_attribute& attr) { on_attribute(id, x, { attr.size(), utils::constraints::PRIMARY_KEY }); } template -void attribute_definition_generator::on_attribute(const char *id, Type &x, const utils::field_attributes &attr) { +void attribute_generator::on_attribute(const char *id, Type &x, const utils::field_attributes &attr) { columns_.emplace_back(id, utils::data_type_traits::type(attr.size()), attr, null_option_type::NOT_NULL); } template -void attribute_definition_generator::on_attribute(const char *id, std::optional & /*x*/, const utils::field_attributes &attr) +void attribute_generator::on_attribute(const char *id, std::optional & /*x*/, const utils::field_attributes &attr) { columns_.emplace_back(id, utils::data_type_traits::type(attr.size()), attr, null_option_type::NULLABLE); } diff --git a/include/matador/object/repository.hpp b/include/matador/object/repository.hpp index 7dc0489..4d9329c 100644 --- a/include/matador/object/repository.hpp +++ b/include/matador/object/repository.hpp @@ -178,7 +178,7 @@ private: private: friend class internal::shadow_repository; friend class repository_node; - friend class attribute_definition_generator; + friend class attribute_generator; std::string name_; std::shared_ptr root_; diff --git a/include/matador/object/repository_node.hpp b/include/matador/object/repository_node.hpp index e6574ec..f3ee47d 100644 --- a/include/matador/object/repository_node.hpp +++ b/include/matador/object/repository_node.hpp @@ -1,7 +1,7 @@ #ifndef SCHEMA_NODE_HPP #define SCHEMA_NODE_HPP -#include "matador/object/attribute_definition_generator.hpp" +#include "matador/object/attribute_generator.hpp" #include "matador/object/object_info.hpp" #include "matador/object/primary_key_resolver.hpp" @@ -23,7 +23,7 @@ public: primary_key_resolver resolver; auto pk_info = resolver.resolve(); auto ref_column = determine_reference_column(typeid(Type), name, pk_info, repo); - const auto attributes = attribute_definition_generator::generate(repo); + const auto attributes = attribute_generator::generate(repo); auto info = std::make_unique>( node, attributes, @@ -47,7 +47,7 @@ public: auto obj = creator(); auto info = std::make_unique>( result.value(), - attribute_definition_generator::generate(*obj, repo), + attribute_generator::generate(*obj, repo), std::move(creator) ); result.value()->info_ = std::move(info); diff --git a/include/matador/query/intermediates/query_create_intermediate.hpp b/include/matador/query/intermediates/query_create_intermediate.hpp index 0b5b9af..3824369 100644 --- a/include/matador/query/intermediates/query_create_intermediate.hpp +++ b/include/matador/query/intermediates/query_create_intermediate.hpp @@ -5,7 +5,7 @@ #include "matador/query/intermediates/executable_query.hpp" -#include "matador/object/attribute_definition_generator.hpp" +#include "matador/object/attribute_generator.hpp" namespace matador::query { @@ -17,7 +17,7 @@ public: executable_query table(const query::table &tab, const std::vector &columns); template executable_query table(const matador::query::table &tab, const object::repository &schema) { - return this->table(tab, object::attribute_definition_generator::generate(schema)); + return this->table(tab, object::attribute_generator::generate(schema)); } executable_query schema(const std::string &schema_name); }; diff --git a/source/core/CMakeLists.txt b/source/core/CMakeLists.txt index ecdadf4..b404006 100644 --- a/source/core/CMakeLists.txt +++ b/source/core/CMakeLists.txt @@ -14,7 +14,7 @@ add_library(matador-core STATIC ../../include/matador/net/select_fd_sets.hpp ../../include/matador/net/socket_interrupter.hpp ../../include/matador/object/attribute.hpp - ../../include/matador/object/attribute_definition_generator.hpp + ../../include/matador/object/attribute_generator.hpp ../../include/matador/object/basic_object_info.hpp ../../include/matador/object/error_code.hpp ../../include/matador/object/foreign_node_completer.hpp @@ -75,7 +75,7 @@ add_library(matador-core STATIC logger/logger.cpp logger/rotating_file_sink.cpp object/attribute.cpp - object/attribute_definition_generator.cpp + object/attribute_generator.cpp object/basic_object_info.cpp object/error_code.cpp object/foreign_node_completer.cpp diff --git a/source/core/object/attribute_definition_generator.cpp b/source/core/object/attribute_definition_generator.cpp deleted file mode 100644 index f3be10f..0000000 --- a/source/core/object/attribute_definition_generator.cpp +++ /dev/null @@ -1,23 +0,0 @@ -#include "matador/object/attribute_definition_generator.hpp" -#include "matador/object/repository.hpp" - -namespace matador::object { - -attribute_definition_generator::attribute_definition_generator(std::vector &columns, const repository &repo) -: columns_(columns) -, repo_(repo) -{} - -void attribute_definition_generator::on_revision(const char *id, uint64_t &rev) { - on_attribute(id, rev); -} - -utils::result, utils::error> attribute_definition_generator::determine_foreign_ref(const std::type_index &ti) const { - return repo_.reference_column(ti); -} - -void attribute_definition_generator::insert_missing_reference_column(const std::type_index& ti, const std::shared_ptr& ref_column) const { - const_cast(repo_).missing_references_.insert({ti, ref_column}); -} - -} \ No newline at end of file diff --git a/source/core/object/attribute_generator.cpp b/source/core/object/attribute_generator.cpp new file mode 100644 index 0000000..d7dd5e1 --- /dev/null +++ b/source/core/object/attribute_generator.cpp @@ -0,0 +1,23 @@ +#include "matador/object/attribute_generator.hpp" +#include "matador/object/repository.hpp" + +namespace matador::object { + +attribute_generator::attribute_generator(std::vector &columns, const repository &repo) +: columns_(columns) +, repo_(repo) +{} + +void attribute_generator::on_revision(const char *id, uint64_t &rev) { + on_attribute(id, rev); +} + +utils::result, utils::error> attribute_generator::determine_foreign_ref(const std::type_index &ti) const { + return repo_.reference_column(ti); +} + +void attribute_generator::insert_missing_reference_column(const std::type_index& ti, const std::shared_ptr& ref_column) const { + const_cast(repo_).missing_references_.insert({ti, ref_column}); +} + +} \ No newline at end of file diff --git a/test/core/object/AttributeDefinitionGeneratorTest.cpp b/test/core/object/AttributeDefinitionGeneratorTest.cpp index d9e1719..b1043b5 100644 --- a/test/core/object/AttributeDefinitionGeneratorTest.cpp +++ b/test/core/object/AttributeDefinitionGeneratorTest.cpp @@ -1,6 +1,6 @@ #include -#include "matador/object/attribute_definition_generator.hpp" +#include "matador/object/attribute_generator.hpp" #include "matador/object/repository.hpp" #include "../test/models/product.hpp" @@ -17,7 +17,7 @@ TEST_CASE("Generate column definitions from object", "[column][definition][gener .and_then([&repo] { return repo.attach("categories"); }); REQUIRE(result); - auto columns = attribute_definition_generator::generate(repo); + auto columns = attribute_generator::generate(repo); const std::vector expected_columns = { attribute{"product_name", basic_type::type_varchar, constraints::PRIMARY_KEY, null_option_type::NOT_NULL }, @@ -43,7 +43,7 @@ TEST_CASE("Generate column definitions from object", "[column][definition][gener TEST_CASE("Generate columns from object with nullable columns", "[column generator]") { repository repo("main"); - auto columns = attribute_definition_generator::generate(repo); + auto columns = attribute_generator::generate(repo); const std::vector expected_columns = { attribute{"id", basic_type::type_uint32, constraints::PRIMARY_KEY, null_option_type::NOT_NULL }, diff --git a/test/orm/query/QueryBuilderTest.cpp b/test/orm/query/QueryBuilderTest.cpp index cbe72d7..26b81ef 100644 --- a/test/orm/query/QueryBuilderTest.cpp +++ b/test/orm/query/QueryBuilderTest.cpp @@ -6,7 +6,7 @@ #include #include "matador/query/table.hpp" -#include "matador/object/attribute_definition_generator.hpp" +#include "matador/object/attribute_generator.hpp" #include "matador/sql/connection.hpp"