proxy lazy resolve progress
This commit is contained in:
@@ -59,7 +59,7 @@ public:
|
||||
return utils::failure(make_error(error_code::UnknownType, "Failed to determine requested type."));
|
||||
}
|
||||
|
||||
session_query_builder eqb(*schema_);
|
||||
session_query_builder eqb(*schema_, *this);
|
||||
auto data = eqb.build<Type>(pk);
|
||||
if (!data.is_ok()) {
|
||||
return utils::failure(make_error(error_code::FailedToBuildQuery, "Failed to build query for type " + info->get().name() + "."));
|
||||
@@ -87,7 +87,7 @@ public:
|
||||
return utils::failure(make_error(error_code::UnknownType, "Failed to determine requested type."));
|
||||
}
|
||||
|
||||
session_query_builder eqb(*schema_);
|
||||
session_query_builder eqb(*schema_, *this);
|
||||
auto data = eqb.build<Type>();
|
||||
if (!data.is_ok()) {
|
||||
return utils::failure(make_error(error_code::FailedToBuildQuery, "Failed to build query for type " + info->get().name() + "."));
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
#include "matador/query/query.hpp"
|
||||
|
||||
#include "matador/sql/connection.hpp"
|
||||
#include "matador/sql/executor.hpp"
|
||||
|
||||
#include "matador/object/join_columns_collector.hpp"
|
||||
#include "matador/object/schema.hpp"
|
||||
@@ -28,11 +29,11 @@ struct entity_query_data {
|
||||
std::unique_ptr<query::basic_condition> where_clause{};
|
||||
};
|
||||
|
||||
class session_query_builder final
|
||||
{
|
||||
class session_query_builder final {
|
||||
public:
|
||||
explicit session_query_builder(const object::schema &scm)
|
||||
: schema_(scm) {}
|
||||
session_query_builder(const object::schema &scm, sql::executor &exec)
|
||||
: schema_(scm)
|
||||
, executor_(exec){}
|
||||
|
||||
template<class EntityType, typename PrimaryKeyType>
|
||||
utils::result<entity_query_data, query_build_error> build(const PrimaryKeyType &pk) {
|
||||
@@ -250,6 +251,7 @@ private:
|
||||
unsigned int column_index{0};
|
||||
unsigned int table_index{0};
|
||||
object::join_columns_collector join_columns_collector_;
|
||||
sql::executor &executor_;
|
||||
};
|
||||
|
||||
template<class Pointer>
|
||||
@@ -287,7 +289,7 @@ void session_query_builder::on_foreign_object(const char *id, Pointer &, const u
|
||||
const auto result = matador::query::query::select<typename Pointer::value_type>(schema_)
|
||||
.from(*foreign_table)
|
||||
.where(sql::column(foreign_table, id, "") == _)
|
||||
.com;
|
||||
.prepare(executor_);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -71,7 +71,7 @@ public:
|
||||
[[nodiscard]] utils::result<sql::statement, utils::error> prepare(sql::executor &exec) const;
|
||||
|
||||
[[nodiscard]] std::string str(const sql::executor &exec) const;
|
||||
[[nodiscard]] sql::query_context compile(const sql::executor &exec, query_mode mode) const;
|
||||
[[nodiscard]] sql::query_context compile(const sql::dialect &d, query_mode mode) const;
|
||||
|
||||
private:
|
||||
[[nodiscard]] utils::result<std::unique_ptr<sql::query_result_impl>, utils::error> fetch(const sql::executor &exec) const;
|
||||
|
||||
Reference in New Issue
Block a user