66 lines
2.5 KiB
C++
66 lines
2.5 KiB
C++
#include "matador/query/intermediates/query_from_intermediate.hpp"
|
|
|
|
#include "matador/query/intermediates/query_join_intermediate.hpp"
|
|
#include "matador/query/intermediates/query_group_by_intermediate.hpp"
|
|
#include "matador/query/intermediates/query_order_by_intermediate.hpp"
|
|
|
|
#include "matador/query/internal/query_parts.hpp"
|
|
#include "matador/query/query_data.hpp"
|
|
|
|
namespace matador::query {
|
|
|
|
query_join_intermediate query_from_intermediate::join_left(const table &t) {
|
|
context_->parts.push_back(std::make_unique<internal::query_join_table_part>(t));
|
|
return {context_};
|
|
}
|
|
|
|
query_join_intermediate query_from_intermediate::join_left(const fetchable_query &q) {
|
|
context_->parts.push_back(std::make_unique<internal::query_join_query_part>(q));
|
|
return {context_};
|
|
}
|
|
|
|
query_from_intermediate query_from_intermediate::join_left(join_data &data) {
|
|
context_->parts.push_back(std::make_unique<internal::query_join_table_part>(*data.join_table));
|
|
context_->parts.push_back(std::make_unique<internal::query_on_part>(std::move(data.condition)));
|
|
return {context_};
|
|
}
|
|
|
|
query_from_intermediate query_from_intermediate::join_left(std::vector<join_data> &data_vector) {
|
|
for (auto &[join_table, condition] : data_vector) {
|
|
context_->parts.push_back(std::make_unique<internal::query_join_table_part>(*join_table));
|
|
context_->parts.push_back(std::make_unique<internal::query_on_part>(std::move(condition)));
|
|
}
|
|
return {context_};
|
|
}
|
|
|
|
query_where_intermediate query_from_intermediate::where( std::unique_ptr<abstract_criteria>&& cond ) {
|
|
return where_clause(std::move(cond));
|
|
}
|
|
|
|
query_where_intermediate query_from_intermediate::where_clause(std::unique_ptr<abstract_criteria> &&cond) {
|
|
if (cond) {
|
|
context_->parts.push_back(std::make_unique<internal::query_where_part>(std::move(cond)));
|
|
}
|
|
return {context_};
|
|
}
|
|
|
|
query_group_by_intermediate query_from_intermediate::group_by(const table_column &column) {
|
|
return group_by({column});
|
|
}
|
|
|
|
query_group_by_intermediate query_from_intermediate::group_by(std::initializer_list<table_column> columns) {
|
|
context_->parts.push_back(std::make_unique<internal::query_group_by_part>(columns));
|
|
return {context_};
|
|
}
|
|
|
|
query_order_by_intermediate query_from_intermediate::order_by(const table_column &col) {
|
|
return order_by({col});
|
|
}
|
|
|
|
query_order_by_intermediate query_from_intermediate::order_by(std::initializer_list<table_column> columns) {
|
|
context_->parts.push_back(std::make_unique<internal::query_order_by_part>(columns));
|
|
return {context_};
|
|
}
|
|
|
|
}
|