added more join_left methods to query_from_intermediate to write shorter fluent sql queries

This commit is contained in:
Sascha Kühl
2024-04-16 17:11:08 +02:00
parent 38da76bfb3
commit ac8b2ed4e4
4 changed files with 40 additions and 71 deletions
+19 -25
View File
@@ -85,7 +85,9 @@ query_order_direction_intermediate query_order_by_intermediate::desc()
query_where_intermediate query_from_intermediate::where_clause(std::unique_ptr<basic_condition> &&cond)
{
data_->parts.push_back(std::make_unique<query_where_part>(std::move(cond)));
if (cond) {
data_->parts.push_back(std::make_unique<query_where_part>(std::move(cond)));
}
return {connection_, schema_, data_};
}
@@ -113,30 +115,6 @@ query_order_by_intermediate query_where_intermediate::order_by(const column &col
return {connection_, schema_, data_};
}
query_join_intermediate query_on_intermediate::join_left(const table &t)
{
data_->parts.push_back(std::make_unique<query_join_part>(t));
return {connection_, schema_, data_};
}
query_where_intermediate query_on_intermediate::where_clause(std::unique_ptr<basic_condition> &&cond)
{
data_->parts.push_back(std::make_unique<query_where_part>(std::move(cond)));
return {connection_, schema_, data_};
}
query_group_by_intermediate query_on_intermediate::group_by(const column &col)
{
data_->parts.push_back(std::make_unique<query_group_by_part>(col));
return {connection_, schema_, data_};
}
query_order_by_intermediate query_on_intermediate::order_by(const column &col)
{
data_->parts.push_back(std::make_unique<query_order_by_part>(col));
return {connection_, schema_, data_};
}
query_on_intermediate query_join_intermediate::on_clause(std::unique_ptr<basic_condition> &&cond)
{
data_->parts.push_back(std::make_unique<query_on_part>(std::move(cond)));
@@ -149,6 +127,22 @@ query_join_intermediate query_from_intermediate::join_left(const table &t)
return {connection_, schema_, data_};
}
query_from_intermediate query_from_intermediate::join_left(join_data &data)
{
data_->parts.push_back(std::make_unique<query_join_part>(data.join_table));
data_->parts.push_back(std::make_unique<query_on_part>(std::move(data.condition)));
return {connection_, schema_, data_};
}
query_from_intermediate query_from_intermediate::join_left(std::vector<join_data> &data_vector)
{
for (auto &data : data_vector) {
data_->parts.push_back(std::make_unique<query_join_part>(data.join_table));
data_->parts.push_back(std::make_unique<query_on_part>(std::move(data.condition)));
}
return {connection_, schema_, data_};
}
query_select_intermediate::query_select_intermediate(connection &db, const sql::schema &schema, const std::vector<column>& columns)
: query_start_intermediate(db, schema)
{