126 std::string
build()
const;
140 const std::vector<std::pair<std::string, sort_order>>
order_by_;
143 const std::vector<std::tuple<std::string, std::string, join_type>>
joins_;
150 std::vector<std::string> select_fields,
151 std::vector<query_condition> conditions,
152 std::vector<std::pair<std::string, sort_order>>
order_by,
153 std::optional<uint32_t>
limit,
154 std::optional<uint32_t>
offset,
155 std::vector<std::tuple<std::string, std::string, join_type>> joins,
156 std::vector<std::string> group_by_fields,
157 std::string having_clause
Thread-safe immutable query builder using functional programming style.
immutable_query_builder join(const std::string &table, const std::string &condition, join_type type=join_type::inner) const
JOIN clause - adds a join.
std::string format_value(const core::database_value &value, database_types db_type) const
immutable_query_builder group_by(std::vector< std::string > fields) const
GROUP BY clause - groups results.
const std::optional< uint32_t > limit_
const std::optional< uint32_t > offset_
immutable_query_builder order_by(const std::string &field, sort_order order=sort_order::asc) const
ORDER BY clause - specifies sorting.
const std::vector< std::tuple< std::string, std::string, join_type > > joins_
const std::vector< query_condition > conditions_
std::string join_type_to_string(join_type type) const
const std::vector< std::string > select_fields_
immutable_query_builder select(std::vector< std::string > fields) const
SELECT clause - specifies which columns to select.
std::string escape_identifier(const std::string &identifier, database_types db_type) const
std::string build() const
Builds the final SQL query string.
const std::vector< std::string > group_by_fields_
immutable_query_builder where(const std::string &field, const std::string &op, const core::database_value &value) const
WHERE clause - adds a condition.
immutable_query_builder(const std::string &table)
Constructs a new immutable query builder.
immutable_query_builder offset(uint32_t count) const
OFFSET clause - skips rows.
const std::vector< std::pair< std::string, sort_order > > order_by_
immutable_query_builder having(const std::string &condition) const
HAVING clause - filters grouped results.
immutable_query_builder limit(uint32_t count) const
LIMIT clause - limits number of results.
const std::string having_clause_
std::string build_for_database(database_types db_type) const
Builds the SQL query for a specific database type.
Represents a WHERE condition in a query.
Defines the enumeration of supported database types.
std::variant< std::string, int64_t, double, bool, std::nullptr_t > database_value
database_types
Represents various database backends or modes.
sort_order
Sort order for ORDER BY clauses.
join_type
Types of SQL joins.