fixed linux build for relation completer

This commit is contained in:
Sascha Kühl 2025-07-13 20:58:35 +02:00
parent 27e2c51175
commit 1b2847696d
5 changed files with 18 additions and 13 deletions

View File

@ -72,7 +72,7 @@ using namespace work::models;
int main() { int main() {
const object::schema schema("Administration"); const object::schema schema("Administration");
sql::connection_pool<sql::connection> pool("postgres://news:news@127.0.0.1:15432/matador", 4); sql::connection_pool<sql::connection> pool("postgres://test:test123!@127.0.0.1:5432/matador", 4);
orm::session ses(pool); orm::session ses(pool);
@ -91,8 +91,8 @@ int main() {
.and_then([&ses] { return ses.attach<jobs::Payload>("payloads"); }) .and_then([&ses] { return ses.attach<jobs::Payload>("payloads"); })
.and_then([&ses] { return ses.attach<jobs::IdPayload, jobs::Payload>("id_list_payloads"); }) .and_then([&ses] { return ses.attach<jobs::IdPayload, jobs::Payload>("id_list_payloads"); })
.and_then([&ses] { return ses.attach<jobs::IdListPayload, jobs::Payload>("id_payloads"); }) .and_then([&ses] { return ses.attach<jobs::IdListPayload, jobs::Payload>("id_payloads"); })
.and_then([&ses] { return ses.attach<jobs::Task>("tasks"); }); .and_then([&ses] { return ses.attach<jobs::Task>("tasks"); })
// .and_then([&ses] { return ses.create_schema(); }); .and_then([&ses] { return ses.create_schema(); });
if (!result) { if (!result) {
std::cout << "error: " << result.err().message() << std::endl; std::cout << "error: " << result.err().message() << std::endl;

View File

@ -44,12 +44,12 @@ public:
template<class ForeignPointerType> template<class ForeignPointerType>
void on_belongs_to(const char *id, ForeignPointerType &/*obj*/, const utils::foreign_attributes &/*attr*/); void on_belongs_to(const char *id, ForeignPointerType &/*obj*/, const utils::foreign_attributes &/*attr*/);
template<class ForeignPointerType> template<class ForeignPointerType>
static void on_has_one(const char * id, ForeignPointerType &/*obj*/, const utils::foreign_attributes &/*attr*/) {} static void on_has_one(const char * /*id*/, ForeignPointerType &/*obj*/, const utils::foreign_attributes &/*attr*/) {}
template<class CollectionType> template<class CollectionType>
void on_has_many(const char *id, CollectionType &, const char *join_column, const utils::foreign_attributes &attr, std::enable_if_t<is_object_ptr<typename CollectionType::value_type>::value> * = nullptr); void on_has_many(const char *id, CollectionType &, const char *join_column, const utils::foreign_attributes &attr, std::enable_if_t<is_object_ptr<typename CollectionType::value_type>::value> * = nullptr);
template<class CollectionType> template<class CollectionType>
void on_has_many(const char *id, CollectionType &, const char *join_column, const utils::foreign_attributes &attr, std::enable_if_t<!is_object_ptr<typename CollectionType::value_type>::value> * = nullptr) {} void on_has_many(const char * /*id*/, CollectionType &, const char * /*join_column*/, const utils::foreign_attributes & /*attr*/, std::enable_if_t<!is_object_ptr<typename CollectionType::value_type>::value> * = nullptr) {}
template<class CollectionType> template<class CollectionType>
void on_has_many_to_many(const char *id, CollectionType &collection, const char *join_column, const char *inverse_join_column, const utils::foreign_attributes &attr); void on_has_many_to_many(const char *id, CollectionType &collection, const char *join_column, const char *inverse_join_column, const utils::foreign_attributes &attr);
@ -87,22 +87,22 @@ private:
template<class ForeignPointerType> template<class ForeignPointerType>
void foreign_node_completer::on_belongs_to( const char* id, ForeignPointerType&, const utils::foreign_attributes& ) { void foreign_node_completer::on_belongs_to( const char* /*id*/, ForeignPointerType&, const utils::foreign_attributes& ) {
attach_node<typename ForeignPointerType::value_type>(); attach_node<typename ForeignPointerType::value_type>();
} }
template<class CollectionType> template<class CollectionType>
void foreign_node_completer::on_has_many( const char* id, CollectionType&, const char* join_column, const utils::foreign_attributes& attr, std::enable_if_t<is_object_ptr<typename CollectionType::value_type>::value>* ) { void foreign_node_completer::on_has_many( const char* /*id*/, CollectionType&, const char* /*join_column*/, const utils::foreign_attributes& /*attr*/, std::enable_if_t<is_object_ptr<typename CollectionType::value_type>::value>* ) {
attach_node<typename CollectionType::value_type::value_type>(); attach_node<typename CollectionType::value_type::value_type>();
} }
template<class CollectionType> template<class CollectionType>
void foreign_node_completer::on_has_many_to_many( const char* id, CollectionType& collection, const char* join_column, const char* inverse_join_column, const utils::foreign_attributes& attr ) { void foreign_node_completer::on_has_many_to_many( const char* /*id*/, CollectionType& /*collection*/, const char* /*join_column*/, const char* /*inverse_join_column*/, const utils::foreign_attributes& /*attr*/ ) {
attach_node<typename CollectionType::value_type::value_type>(); attach_node<typename CollectionType::value_type::value_type>();
} }
template<class CollectionType> template<class CollectionType>
void foreign_node_completer::on_has_many_to_many( const char* id, CollectionType& collection, const utils::foreign_attributes& attr ) { void foreign_node_completer::on_has_many_to_many( const char* /*id*/, CollectionType& /*collection*/, const utils::foreign_attributes& /*attr*/ ) {
attach_node<typename CollectionType::value_type::value_type>(); attach_node<typename CollectionType::value_type::value_type>();
} }

View File

@ -20,8 +20,8 @@ private:
public: public:
explicit shadow_schema(object::schema& s); explicit shadow_schema(object::schema& s);
schema& schema() const; object::schema& schema() const;
bool schema_contains(const std::type_index& ti) const; [[nodiscard]] bool schema_contains(const std::type_index& ti) const;
[[nodiscard]] utils::result<node_ptr, utils::error> find_node(const std::type_index &type_index) const; [[nodiscard]] utils::result<node_ptr, utils::error> find_node(const std::type_index &type_index) const;
[[nodiscard]] utils::result<node_ptr, utils::error> attach_node(const std::shared_ptr<schema_node> &node) const; [[nodiscard]] utils::result<node_ptr, utils::error> attach_node(const std::shared_ptr<schema_node> &node) const;
[[nodiscard]] utils::result<void, utils::error> detach_node(const std::shared_ptr<schema_node> &node) const; [[nodiscard]] utils::result<void, utils::error> detach_node(const std::shared_ptr<schema_node> &node) const;

View File

@ -82,7 +82,10 @@ public:
auto &conn = connection_repo_.back(); auto &conn = connection_repo_.back();
idle_connections_.emplace(conn.first, &conn); idle_connections_.emplace(conn.first, &conn);
// Todo: handle result // Todo: handle result
std::ignore = conn.second.open(); const auto result = conn.second.open();
if (!result) {
throw std::runtime_error("Failed to open connection");
}
--count; --count;
} }
} }

View File

@ -1,11 +1,13 @@
#ifndef PRIMARY_KEY_ATTRIBUTE_HPP #ifndef PRIMARY_KEY_ATTRIBUTE_HPP
#define PRIMARY_KEY_ATTRIBUTE_HPP #define PRIMARY_KEY_ATTRIBUTE_HPP
#include <cstddef>
namespace matador::utils { namespace matador::utils {
class primary_key_attribute final { class primary_key_attribute final {
public: public:
/** /**
* Creates primary_key_attribute instance * Creates a primary_key_attribute instance
* with size 0 (zero). * with size 0 (zero).
*/ */
primary_key_attribute() = default; primary_key_attribute() = default;