diff --git a/include/matador/orm/session_query_builder.hpp b/include/matador/orm/session_query_builder.hpp index a7b3da2..1ecf344 100644 --- a/include/matador/orm/session_query_builder.hpp +++ b/include/matador/orm/session_query_builder.hpp @@ -280,14 +280,14 @@ void session_query_builder::on_foreign_object(const char *id, Pointer &, const u sql::column{next->second, pk->name()} ); } else { - // using namespace matador::utils; - // using namespace matador::query; push(id); + using namespace matador::utils; + using namespace matador::query; // create select query - // const auto result = matador::query::query::select(schema_) - // .from(*foreign_table) - // .where(sql::column(foreign_table, id, "") == _) - // .prepare(); + const auto result = matador::query::query::select(schema_) + .from(*foreign_table) + .where(sql::column(foreign_table, id, "") == _) + .com; } } diff --git a/include/matador/query/intermediates/fetchable_query.hpp b/include/matador/query/intermediates/fetchable_query.hpp index 7aa1f88..223f710 100644 --- a/include/matador/query/intermediates/fetchable_query.hpp +++ b/include/matador/query/intermediates/fetchable_query.hpp @@ -71,6 +71,7 @@ public: [[nodiscard]] utils::result 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; private: [[nodiscard]] utils::result, utils::error> fetch(const sql::executor &exec) const; diff --git a/source/orm/query/intermediates/fetchable_query.cpp b/source/orm/query/intermediates/fetchable_query.cpp index 04744dd..37fff2d 100644 --- a/source/orm/query/intermediates/fetchable_query.cpp +++ b/source/orm/query/intermediates/fetchable_query.cpp @@ -32,21 +32,21 @@ utils::result, utils::error> fetchable_query::fetch_o } std::string fetchable_query::str(const sql::executor &exec) const { + return exec.str(compile(exec, query_mode::Direct)); +} + +sql::query_context fetchable_query::compile(const sql::executor &exec, const query_mode mode) const { query_compiler compiler; - context_->mode = query_mode::Direct; - return exec.str(compiler.compile(*context_, exec.dialect(), std::nullopt)); + context_->mode = mode; + return compiler.compile(*context_, exec.dialect(), std::nullopt); } utils::result, utils::error> fetchable_query::fetch(const sql::executor &exec) const { - query_compiler compiler; - context_->mode = query_mode::Direct; - return exec.fetch(compiler.compile(*context_, exec.dialect(), std::nullopt)); + return exec.fetch(compile(exec, query_mode::Direct)); } utils::result fetchable_query::prepare(sql::executor &exec) const { - query_compiler compiler; - context_->mode = query_mode::Prepared; - return exec.prepare(compiler.compile(*context_, exec.dialect(), std::nullopt)); + return exec.prepare(compile(exec, query_mode::Prepared)); } } \ No newline at end of file