|
Database System 0.1.0
Advanced C++20 Database System with Multi-Backend Support
|
Builds WHERE clause conditions with proper precedence. More...
#include <condition_builder.h>

Classes | |
| struct | condition_node |
Public Member Functions | |
| condition_builder () | |
| condition_builder & | add (const condition &cond, logical_op op=logical_op::AND) |
| Add a condition. | |
| condition_builder & | add (const std::string &field, const std::string &operator_, const core::database_value &value, logical_op op=logical_op::AND) |
| Add a simple condition. | |
| condition_builder & | add_raw (const std::string &raw, logical_op op=logical_op::AND) |
| Add a raw SQL condition. | |
| condition_builder & | begin_group () |
| Begin a condition group (adds opening parenthesis) | |
| condition_builder & | end_group () |
| End a condition group (adds closing parenthesis) | |
| std::string | build (const value_formatter &formatter) const |
| Build the WHERE clause. | |
| bool | empty () const |
| Check if builder is empty. | |
| void | clear () |
| Clear all conditions. | |
Private Member Functions | |
| std::string | format_condition (const condition &cond, const value_formatter &formatter) const |
| std::string | logical_op_to_string (logical_op op) const |
Private Attributes | |
| std::vector< condition_node > | nodes_ |
| int | current_group_level_ |
Builds WHERE clause conditions with proper precedence.
Features:
Examples:
Thread Safety:
Definition at line 70 of file condition_builder.h.
| database::query::condition_builder::condition_builder | ( | ) |
Definition at line 10 of file condition_builder.cpp.
| condition_builder & database::query::condition_builder::add | ( | const condition & | cond, |
| logical_op | op = logical_op::AND ) |
Add a condition.
| cond | Condition to add |
| op | Logical operator (AND/OR) |
Definition at line 13 of file condition_builder.cpp.
References database::query::condition_builder::condition_node::cond, current_group_level_, database::query::condition_builder::condition_node::group_level, database::query::condition_builder::condition_node::is_group_end, database::query::condition_builder::condition_node::is_group_start, nodes_, and database::query::condition_builder::condition_node::op.
Referenced by add(), and add_raw().

| condition_builder & database::query::condition_builder::add | ( | const std::string & | field, |
| const std::string & | operator_, | ||
| const core::database_value & | value, | ||
| logical_op | op = logical_op::AND ) |
Add a simple condition.
| field | Field name |
| operator_ | Comparison operator |
| value | Value to compare |
| op | Logical operator (AND/OR) |
Definition at line 24 of file condition_builder.cpp.
References add(), database::query::condition::field, database::query::condition::op, and database::query::condition::value.

| condition_builder & database::query::condition_builder::add_raw | ( | const std::string & | raw, |
| logical_op | op = logical_op::AND ) |
Add a raw SQL condition.
| raw | Raw SQL condition |
| op | Logical operator (AND/OR) |
Definition at line 33 of file condition_builder.cpp.
References add(), and database::query::condition::raw.

| condition_builder & database::query::condition_builder::begin_group | ( | ) |
Begin a condition group (adds opening parenthesis)
Definition at line 39 of file condition_builder.cpp.
References database::query::AND, current_group_level_, database::query::condition_builder::condition_node::group_level, database::query::condition_builder::condition_node::is_group_end, database::query::condition_builder::condition_node::is_group_start, nodes_, and database::query::condition_builder::condition_node::op.
| std::string database::query::condition_builder::build | ( | const value_formatter & | formatter | ) | const |
Build the WHERE clause.
| formatter | Value formatter for this database |
Definition at line 65 of file condition_builder.cpp.
References format_condition(), logical_op_to_string(), and nodes_.

| void database::query::condition_builder::clear | ( | ) |
Clear all conditions.
Definition at line 104 of file condition_builder.cpp.
References current_group_level_, and nodes_.
| bool database::query::condition_builder::empty | ( | ) | const |
Check if builder is empty.
Definition at line 100 of file condition_builder.cpp.
References nodes_.
| condition_builder & database::query::condition_builder::end_group | ( | ) |
End a condition group (adds closing parenthesis)
Definition at line 51 of file condition_builder.cpp.
References database::query::AND, current_group_level_, database::query::condition_builder::condition_node::group_level, database::query::condition_builder::condition_node::is_group_end, database::query::condition_builder::condition_node::is_group_start, nodes_, and database::query::condition_builder::condition_node::op.
|
private |
Definition at line 109 of file condition_builder.cpp.
References database::query::value_formatter::escape_identifier(), database::query::condition::field, database::query::value_formatter::format(), database::query::condition::is_raw(), database::query::condition::op, database::query::condition::raw, and database::query::condition::value.
Referenced by build().


|
private |
Definition at line 128 of file condition_builder.cpp.
References database::query::AND, and database::query::OR.
Referenced by build().

|
private |
Definition at line 141 of file condition_builder.h.
Referenced by add(), begin_group(), clear(), and end_group().
|
private |
Definition at line 140 of file condition_builder.h.
Referenced by add(), begin_group(), build(), clear(), empty(), and end_group().