11 : current_group_level_(0) {}
70 std::ostringstream oss;
73 for (
const auto& node :
nodes_) {
74 if (node.is_group_start) {
83 if (node.is_group_end) {
115 std::ostringstream oss;
119 if (cond.
op ==
"IS NULL" || cond.
op ==
"IS NOT NULL") {
Builds WHERE clause conditions with proper precedence.
condition_builder & end_group()
End a condition group (adds closing parenthesis)
void clear()
Clear all conditions.
condition_builder & add_raw(const std::string &raw, logical_op op=logical_op::AND)
Add a raw SQL condition.
std::string logical_op_to_string(logical_op op) const
std::vector< condition_node > nodes_
condition_builder & begin_group()
Begin a condition group (adds opening parenthesis)
std::string build(const value_formatter &formatter) const
Build the WHERE clause.
std::string format_condition(const condition &cond, const value_formatter &formatter) const
bool empty() const
Check if builder is empty.
condition_builder & add(const condition &cond, logical_op op=logical_op::AND)
Add a condition.
std::variant< std::string, int64_t, double, bool, std::nullptr_t > database_value
logical_op
Logical operators for combining conditions.
Represents a single WHERE condition.
core::database_value value
Value to compare.
std::string raw
Raw SQL condition (if any)
std::string field
Field name.
std::string op
Operator (=, !=, <, >, <=, >=, LIKE, IN, etc.)