IronQuery
A SQL-first query builder for C++
Loading...
Searching...
No Matches
case_builder.hpp
1#pragma once
2
3#include <iron_query/condition.hpp>
4#include <iron_query/expr.hpp>
5#include <string>
6
7namespace iron_query {
8
13class [[nodiscard]] CaseBuilder final {
14public:
16 CaseBuilder() = default;
17
22
27 CaseBuilder Then(Expr result) &&;
28
32 CaseBuilder Else(Expr result) &&;
33
36 Expr End() const;
37
38private:
39 std::string whens_;
40 std::string pending_when_;
41 std::string else_;
42 bool has_pending_when_{false};
43};
44
48
49} // namespace iron_query
Transitional representation for CASE WHEN ... END.
Definition case_builder.hpp:13
CaseBuilder Else(Expr result) &&
Sets the ELSE result fallback branch.
CaseBuilder Then(Expr result) &&
Completes the pending branch as WHEN cond THEN result.
CaseBuilder()=default
Starts an empty CASE expression; call When to add branches.
CaseBuilder When(Condition cond) &&
Begins a new WHEN cond branch.
Expr End() const
Finalizes the expression as CASE ... [ELSE ...] END.
A boolean-valued SQL predicate, e.g. the result of a comparison, LIKE/IN/BETWEEN/IS [NOT] NULL,...
Definition condition.hpp:25
Arbitrary SQL expression.
Definition expr.hpp:46
CaseBuilder Case()
Handy fabric for CaseBuilder.