query/source/orm/orm/session_query_builder.cpp

41 lines
1.1 KiB
C++

#include "matador/orm/session_query_builder.hpp"
#include <iostream>
namespace matador::orm {
void session_query_builder::on_primary_key(const char *id, std::string &, size_t)
{
push(id);
if (!is_root_entity()) {
const auto b = pk_.is_varchar();
std::cout << "is matching primary key: " << std::boolalpha << b << "\n";
}
}
void session_query_builder::on_revision(const char *id, unsigned long long &/*rev*/)
{
push(id);
}
void session_query_builder::push(const std::string &column_name)
{
char str[4];
snprintf(str, 4, "c%02d", ++column_index);
entity_query_data_.columns.emplace_back(table_info_stack_.top().get().name(), column_name, str);
}
[[nodiscard]] bool session_query_builder::is_root_entity() const {
return table_info_stack_.size() == 1;
}
void session_query_builder::append_join(const sql::column &left, const sql::column &right)
{
using namespace matador::query;
entity_query_data_.joins.push_back({
{ right.table_ },
make_condition(left == right)
});
}
}