sql select join progress

This commit is contained in:
2024-02-02 19:30:16 +01:00
parent e8b0f0e802
commit aa221aa571
8 changed files with 131 additions and 68 deletions
+14 -4
View File
@@ -17,12 +17,11 @@ const std::string &dialect::data_type_at(data_type_t type) const
std::string dialect::prepare_identifier(const column &col) const
{
std::string result(col.name());
std::string result;
if (!col.is_function()) {
escape_quotes_in_identifier(result);
quote_identifier(result);
result = prepare_identifier_string(col.name());
} else {
result = sql_func_map_.at(col.function()) + "(" + result + ")";
result = sql_func_map_.at(col.function()) + "(" + col.name() + ")";
}
if (!col.alias().empty()) {
result += " AS " + col.alias();
@@ -30,6 +29,17 @@ std::string dialect::prepare_identifier(const column &col) const
return result;
}
std::string dialect::prepare_identifier_string(const std::string &col) const
{
auto parts = utils::split(col, '.');
for (auto &part : parts) {
escape_quotes_in_identifier(part);
quote_identifier(part);
}
return utils::join(parts, ".");
}
std::string dialect::prepare_literal(const std::string &str) const
{
std::string result(str);
+26 -1
View File
@@ -76,9 +76,34 @@ query_order_by_intermediate query_where_intermediate::order_by(const std::string
return {connection_, builder_.order_by(name)};
}
query_join_intermediate query_on_intermediate::join(const std::string &join_table_name, const std::string &as)
{
return {connection_, builder_.join(join_table_name, join_type_t::INNER, as)};
}
query_where_intermediate query_on_intermediate::where(const basic_condition &cond)
{
return {connection_, builder_.where(cond)};
}
query_group_by_intermediate query_on_intermediate::group_by(const std::string &name)
{
return {connection_, builder_.group_by(name)};
}
query_order_by_intermediate query_on_intermediate::order_by(const std::string &name)
{
return {connection_, builder_.order_by(name)};
}
query_on_intermediate query_join_intermediate::on(const std::string &column, const std::string &join_column)
{
return {connection_, builder_.on(column, join_column)};
}
query_join_intermediate query_from_intermediate::join(const std::string &join_table_name, const std::string &as)
{
return query_join_intermediate();
return {connection_, builder_.join(join_table_name, join_type_t::INNER, as)};
}
query_where_intermediate query_from_intermediate::where(const basic_condition &cond)