15#include <initializer_list>
51 std::string
to_sql()
const;
122 query_builder&
where(const std::
string& field, const std::
string& op, const core::database_value& value);
135 query_builder&
values(const std::vector<std::map<std::
string, core::database_value>>& rows);
139 query_builder&
set(const std::
string& field, const core::database_value& value);
140 query_builder&
set(const std::map<std::
string, core::database_value>& data);
150 std::
string build() const;
151 core::database_result
execute(core::database_backend* db) const;
Universal query builder that adapts to different database types.
query_builder & select(const std::vector< std::string > &columns)
query_builder & for_database(database_types db_type)
std::string build() const
query_builder & group_by(const std::vector< std::string > &columns)
query_builder & where(const std::string &field, const std::string &op, const core::database_value &value)
query_builder & limit(size_t count)
core::database_result execute(core::database_backend *db) const
query_builder & update(const std::string &table)
query_builder(database_types db_type=database_types::none)
database_types get_database_type() const
query_builder & having(const std::string &condition)
query_builder & collection(const std::string &name)
query_builder & from(const std::string &table)
std::unique_ptr< query_dialect > dialect_
query_builder & order_by(const std::string &column, sort_order order=sort_order::asc)
query_builder & offset(size_t count)
query_builder & key(const std::string &key)
query_builder(query_builder &&) noexcept=default
query_builder & set(const std::string &field, const core::database_value &value)
query_builder & delete_from(const std::string &table)
query_builder & join(const std::string &table, const std::string &condition, join_type type=join_type::inner)
query_builder & insert_into(const std::string &table)
query_builder & values(const std::map< std::string, core::database_value > &data)
Represents a WHERE condition in a query.
std::vector< query_condition > sub_conditions_
std::string to_redis() const
core::database_value value_
std::string to_mongodb() const
std::string logical_operator_
query_condition operator||(const query_condition &other) const
std::string raw_condition_
query_condition operator&&(const query_condition &other) const
std::string to_sql() const
Abstract interface for database-specific query formatting.
Abstract interface for database backends.
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.
@ none
No specific database type is set.
sort_order
Sort order for ORDER BY clauses.
join_type
Types of SQL joins.