fixed compilation and tests

This commit is contained in:
Sascha Kühl 2025-11-23 11:02:17 +01:00
parent 78abf16f28
commit 19b0adf737
8 changed files with 74 additions and 62 deletions

View File

@ -125,7 +125,7 @@ std::string postgres_connection::generate_statement_name(const sql::query_contex
utils::result<std::unique_ptr<sql::statement_impl>, utils::error> postgres_connection::prepare(const sql::query_context &context) { utils::result<std::unique_ptr<sql::statement_impl>, utils::error> postgres_connection::prepare(const sql::query_context &context) {
auto statement_name = postgres_connection::generate_statement_name(context); auto statement_name = postgres_connection::generate_statement_name(context);
PGresult *result = PQprepare(conn_, statement_name.c_str(), context.sql.c_str(), const PGresult *result = PQprepare(conn_, statement_name.c_str(), context.sql.c_str(),
static_cast<int>(context.bind_vars.size()), nullptr); static_cast<int>(context.bind_vars.size()), nullptr);
if (is_result_error(result)) { if (is_result_error(result)) {

View File

@ -137,7 +137,7 @@ void attribute_generator::on_primary_key(const char *id, ValueType &x, const uti
} }
template<typename Type> template<typename Type>
void attribute_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>::type(attr.size()), attr, null_option_type::NOT_NULL); columns_.emplace_back(id, utils::data_type_traits<Type>::type(attr.size()), attr, null_option_type::NOT_NULL);
} }

View File

@ -18,7 +18,7 @@ public:
template < typename Type > template < typename Type >
static std::shared_ptr<repository_node> make_node(repository& repo, const std::string& name) { static std::shared_ptr<repository_node> make_node(repository& repo, const std::string& name) {
auto node = std::make_shared<repository_node>( repo, name, typeid( Type ) ); auto node = std::shared_ptr<repository_node>(new repository_node(repo, name, typeid(Type)));
primary_key_resolver resolver; primary_key_resolver resolver;
auto pk_info = resolver.resolve<Type>(); auto pk_info = resolver.resolve<Type>();

View File

@ -30,7 +30,7 @@ public:
[[nodiscard]] bool has_alias() const; [[nodiscard]] bool has_alias() const;
[[nodiscard]] std::string alias() const; [[nodiscard]] std::string alias() const;
[[nodiscard]] std::shared_ptr<table> table() const; [[nodiscard]] std::shared_ptr<class table> table() const;
void table(const std::shared_ptr<query::table>& t); void table(const std::shared_ptr<query::table>& t);
operator const std::string&() const; operator const std::string&() const;

View File

@ -26,11 +26,11 @@ public:
class query_alter_table_part final : public query_part { class query_alter_table_part final : public query_part {
public: public:
explicit query_alter_table_part(table tab); explicit query_alter_table_part(class table tab);
void accept(query_part_visitor &visitor) override; void accept(query_part_visitor &visitor) override;
[[nodiscard]] const table& table() const; [[nodiscard]] const class table& table() const;
private: private:
query::table table_; query::table table_;
@ -68,10 +68,10 @@ private:
class query_add_foreign_key_reference_part final : public query_part { class query_add_foreign_key_reference_part final : public query_part {
public: public:
explicit query_add_foreign_key_reference_part(table tab, const std::vector<column>& columns); explicit query_add_foreign_key_reference_part(class table tab, const std::vector<column>& columns);
void accept(query_part_visitor &visitor) override; void accept(query_part_visitor &visitor) override;
[[nodiscard]] const table& table() const; [[nodiscard]] const class table& table() const;
[[nodiscard]] const std::vector<column>& columns() const; [[nodiscard]] const std::vector<column>& columns() const;
private: private:
@ -116,9 +116,9 @@ private:
class query_from_part final : public query_part class query_from_part final : public query_part
{ {
public: public:
explicit query_from_part(table t); explicit query_from_part(class table tab);
[[nodiscard]] const table& table() const; [[nodiscard]] const class table& table() const;
private: private:
void accept(query_part_visitor &visitor) override; void accept(query_part_visitor &visitor) override;
@ -130,9 +130,9 @@ private:
class query_join_part final : public query_part class query_join_part final : public query_part
{ {
public: public:
explicit query_join_part(table t); explicit query_join_part(class table tab);
[[nodiscard]] const table& table() const; [[nodiscard]] const class table& table() const;
private: private:
void accept(query_part_visitor &visitor) override; void accept(query_part_visitor &visitor) override;
@ -189,9 +189,9 @@ protected:
class query_group_by_part final : public query_part class query_group_by_part final : public query_part
{ {
public: public:
explicit query_group_by_part(column col); explicit query_group_by_part(class column col);
[[nodiscard]] const column& column() const; [[nodiscard]] const class column& column() const;
private: private:
void accept(query_part_visitor &visitor) override; void accept(query_part_visitor &visitor) override;
@ -203,9 +203,9 @@ private:
class query_order_by_part final : public query_part class query_order_by_part final : public query_part
{ {
public: public:
explicit query_order_by_part(column col); explicit query_order_by_part(class column col);
[[nodiscard]] const column& column() const; [[nodiscard]] const class column& column() const;
private: private:
void accept(query_part_visitor &visitor) override; void accept(query_part_visitor &visitor) override;
@ -272,9 +272,9 @@ private:
class query_into_part final : public query_part class query_into_part final : public query_part
{ {
public: public:
query_into_part(table t, std::vector<column> columns); query_into_part(class table tab, std::vector<column> columns);
[[nodiscard]] const table& table() const; [[nodiscard]] const class table& table() const;
[[nodiscard]] const std::vector<column>& columns() const; [[nodiscard]] const std::vector<column>& columns() const;
private: private:
@ -304,9 +304,9 @@ private:
class query_update_part final : public query_part class query_update_part final : public query_part
{ {
public: public:
explicit query_update_part(table table); explicit query_update_part(class table tab);
[[nodiscard]] const table& table() const; [[nodiscard]] const class table& table() const;
private: private:
void accept(query_part_visitor &visitor) override; void accept(query_part_visitor &visitor) override;
@ -341,9 +341,9 @@ private:
class query_delete_from_part final : public query_part class query_delete_from_part final : public query_part
{ {
public: public:
explicit query_delete_from_part(table table); explicit query_delete_from_part(class table tab);
[[nodiscard]] const table& table() const; [[nodiscard]] const class table& table() const;
private: private:
void accept(query_part_visitor &visitor) override; void accept(query_part_visitor &visitor) override;
@ -364,9 +364,9 @@ private:
class query_create_table_part final : public query_part class query_create_table_part final : public query_part
{ {
public: public:
query_create_table_part(table table, std::vector<object::attribute> columns); query_create_table_part(class table tab, std::vector<object::attribute> columns);
[[nodiscard]] const table& table() const; [[nodiscard]] const class table& table() const;
[[nodiscard]] const std::vector<object::attribute>& columns() const; [[nodiscard]] const std::vector<object::attribute>& columns() const;
private: private:
@ -402,9 +402,9 @@ private:
class query_drop_table_part final : public query_part class query_drop_table_part final : public query_part
{ {
public: public:
explicit query_drop_table_part(table table); explicit query_drop_table_part(class table tab);
[[nodiscard]] const table& table() const; [[nodiscard]] const class table& table() const;
private: private:
void accept(query_part_visitor &visitor) override; void accept(query_part_visitor &visitor) override;

View File

@ -16,7 +16,7 @@ public:
table(const char *name); // NOLINT(*-explicit-constructor) table(const char *name); // NOLINT(*-explicit-constructor)
table(std::string name); // NOLINT(*-explicit-constructor) table(std::string name); // NOLINT(*-explicit-constructor)
table(std::string name, std::string as); table(std::string name, std::string as);
table(std::string name, std::string as, const std::vector<column> &columns); table(std::string name, std::string as, const std::vector<class column> &columns);
table& as(const std::string &a); table& as(const std::string &a);
@ -28,9 +28,9 @@ public:
[[nodiscard]] const std::string& name() const; [[nodiscard]] const std::string& name() const;
[[nodiscard]] const std::string& alias() const; [[nodiscard]] const std::string& alias() const;
[[nodiscard]] const std::vector<column>& columns() const; [[nodiscard]] const std::vector<class column>& columns() const;
[[nodiscard]] column column(const std::string &name) const; [[nodiscard]] class column column(const std::string &name) const;
operator const std::vector<query::column>&() const; operator const std::vector<query::column>&() const;
private: private:

View File

@ -108,9 +108,9 @@ const std::vector<column>& query_select_part::columns() const
return columns_; return columns_;
} }
query_from_part::query_from_part(class table t) query_from_part::query_from_part(class table tab)
: query_part(sql::dialect_token::From) : query_part(sql::dialect_token::From)
, table_(std::move(t)) {} , table_(std::move(tab)) {}
const table &query_from_part::table() const const table &query_from_part::table() const
{ {
@ -122,9 +122,9 @@ void query_from_part::accept(query_part_visitor &visitor)
visitor.visit(*this); visitor.visit(*this);
} }
query_join_part::query_join_part(class table t) query_join_part::query_join_part(class table tab)
: query_part(sql::dialect_token::Join) : query_part(sql::dialect_token::Join)
, table_(std::move(t)) {} , table_(std::move(tab)) {}
const table &query_join_part::table() const const table &query_join_part::table() const
{ {
@ -252,9 +252,9 @@ void query_insert_part::accept(query_part_visitor &visitor)
visitor.visit(*this); visitor.visit(*this);
} }
query_into_part::query_into_part(class table t, std::vector<column> columns) query_into_part::query_into_part(class table tab, std::vector<column> columns)
: query_part(sql::dialect_token::Insert) : query_part(sql::dialect_token::Insert)
, table_(std::move(t)) , table_(std::move(tab))
, columns_(std::move(columns)) {} , columns_(std::move(columns)) {}
const table &query_into_part::table() const const table &query_into_part::table() const
@ -286,9 +286,9 @@ void query_values_part::accept(query_part_visitor &visitor)
visitor.visit(*this); visitor.visit(*this);
} }
query_update_part::query_update_part(class table table) query_update_part::query_update_part(class table tab)
: query_part(sql::dialect_token::Update) : query_part(sql::dialect_token::Update)
, table_(std::move(table)) {} , table_(std::move(tab)) {}
const table& query_update_part::table() const const table& query_update_part::table() const
{ {
@ -322,9 +322,9 @@ void query_delete_part::accept(query_part_visitor &visitor)
visitor.visit(*this); visitor.visit(*this);
} }
query_delete_from_part::query_delete_from_part(class table table) query_delete_from_part::query_delete_from_part(class table tab)
: query_part(sql::dialect_token::From) : query_part(sql::dialect_token::From)
, table_(std::move(table)) {} , table_(std::move(tab)) {}
const table &query_delete_from_part::table() const const table &query_delete_from_part::table() const
{ {
@ -344,9 +344,9 @@ void query_create_part::accept(query_part_visitor &visitor)
visitor.visit(*this); visitor.visit(*this);
} }
query_create_table_part::query_create_table_part(class table table, std::vector<object::attribute> columns) query_create_table_part::query_create_table_part(class table tab, std::vector<object::attribute> columns)
: query_part(sql::dialect_token::Table) : query_part(sql::dialect_token::Table)
, table_(std::move(table)) , table_(std::move(tab))
, columns_(std::move(columns)) {} , columns_(std::move(columns)) {}
const table &query_create_table_part::table() const const table &query_create_table_part::table() const
@ -384,9 +384,9 @@ void query_drop_part::accept(query_part_visitor &visitor)
visitor.visit(*this); visitor.visit(*this);
} }
query_drop_table_part::query_drop_table_part(class table table) query_drop_table_part::query_drop_table_part(class table tab)
: query_part(sql::dialect_token::Table) : query_part(sql::dialect_token::Table)
, table_(std::move(table)) {} , table_(std::move(tab)) {}
const table &query_drop_table_part::table() const const table &query_drop_table_part::table() const
{ {

View File

@ -8,27 +8,39 @@
namespace matador::test { namespace matador::test {
struct airplane { struct airplane {
airplane() = default; airplane() = default;
airplane(const unsigned int id, std::string b, std::string m) airplane(const unsigned int id, std::string b, std::string m)
: id(id) : id(id)
, brand(std::move(b)) , brand(std::move(b))
, model(std::move(m)) {} , model(std::move(m)) {}
unsigned int id{}; unsigned int id{};
std::string brand; std::string brand;
std::string model; std::string model;
template<class Operator>
void process(Operator &op) {
namespace field = matador::access;
using namespace matador::utils;
field::primary_key(op, "id", id);
field::attribute(op, "brand", brand, 255);
field::attribute(op, "model", model, 255);
}
}; };
} }
namespace matador::access { // namespace matador::access {
template<class Operator> // template<class Operator>
void process(Operator &op, test::airplane &object) { // void process(Operator &op, matador::test::airplane &object) {
namespace field = matador::access; // namespace field = matador::access;
using namespace matador::utils; // using namespace matador::utils;
field::primary_key(op, "id", object.id); // field::primary_key(op, "id", object.id);
field::attribute(op, "brand", object.brand, 255); // field::attribute(op, "brand", object.brand, 255);
field::attribute(op, "model", object.model, 255); // field::attribute(op, "model", object.model, 255);
} // }
// template<class Operator>
} // void process(Operator &op, const matador::test::airplane &object) {
// process(op, const_cast<matador::test::airplane &>(object));
// }
// }
#endif //QUERY_AIRPLANE_HPP #endif //QUERY_AIRPLANE_HPP