uses criteria for session::find methods

This commit is contained in:
Sascha Kühl
2025-10-30 14:54:39 +01:00
parent 44c50cf2af
commit 270c2922ff
23 changed files with 267 additions and 208 deletions
+2
View File
@@ -14,6 +14,8 @@ std::string orm_category_impl::message(const int ev) const {
return "No connection available";
case error_code::UnknownType:
return "Unknown type";
case error_code::NoPrimaryKey:
return "No primary key";
case error_code::FailedToBuildQuery:
return "Failed to build query";
case error_code::FailedToFindObject:
+44
View File
@@ -3,6 +3,50 @@
#include <iostream>
namespace matador::orm {
criteria_transformer::criteria_transformer(const object::repository& repo, const std::unordered_map<std::string, std::shared_ptr<sql::table>>& tables_by_name)
: repo_(repo)
, tables_by_name_(tables_by_name) {}
void criteria_transformer::visit( const query::between_criteria& node ) {
update_criteria_column(node);
}
void criteria_transformer::visit( const query::binary_criteria& node ) {
update_criteria_column(node);
}
void criteria_transformer::visit( const query::binary_column_criteria& node ) {}
void criteria_transformer::visit( const query::collection_criteria& node ) {
update_criteria_column(node);
}
void criteria_transformer::visit( const query::collection_query_criteria& node ) {
update_criteria_column(node);
}
void criteria_transformer::visit( const query::like_criteria& node ) {
update_criteria_column(node);
}
void criteria_transformer::visit( const query::logical_criteria& node ) {
node.left_clause()->accept(*this);
node.right_clause()->accept(*this);
}
void criteria_transformer::visit( const query::not_criteria& node ) {
node.clause()->accept(*this);
}
void criteria_transformer::update_criteria_column(const query::abstract_column_criteria& node) const {
const auto it = tables_by_name_.find(node.column().table()->name);
if (it == tables_by_name_.end()) {
return;
}
const_cast<sql::column&>(node.column()).table_ = it->second;
}
void session_query_builder::on_revision(const char *id, uint64_t &/*rev*/) {
push(id);
}