relx 0.1.0
A Modern C++23 Type-Safe SQL Query Builder
Loading...
Searching...
No Matches
case_helpers.hpp
Go to the documentation of this file.
1#pragma once
2
3#include "../function.hpp"
4#include "../value.hpp"
5
6namespace relx::query {
7
8// Extension methods for CaseBuilder to work with literals in THEN clauses
9
10// For string literals
11inline auto when(CaseBuilder& builder, const ConditionExpr auto& condition, const char* value) {
12 return builder.when(condition, val(value));
13}
14
15// For string
16inline auto when(CaseBuilder& builder, const ConditionExpr auto& condition,
17 const std::string& value) {
18 return builder.when(condition, val(value));
19}
20
21// For integers
22inline auto when(CaseBuilder& builder, const ConditionExpr auto& condition, int value) {
23 return builder.when(condition, val(value));
24}
25
26// For long integers
27inline auto when(CaseBuilder& builder, const ConditionExpr auto& condition, long value) {
28 return builder.when(condition, val(value));
29}
30
31// For long long integers
32inline auto when(CaseBuilder& builder, const ConditionExpr auto& condition, long long value) {
33 return builder.when(condition, val(value));
34}
35
36// For double
37inline auto when(CaseBuilder& builder, const ConditionExpr auto& condition, double value) {
38 return builder.when(condition, val(value));
39}
40
41// For float
42inline auto when(CaseBuilder& builder, const ConditionExpr auto& condition, float value) {
43 return builder.when(condition, val(value));
44}
45
46// For bool
47inline auto when(CaseBuilder& builder, const ConditionExpr auto& condition, bool value) {
48 return builder.when(condition, val(value));
49}
50
51// Helper for else_ with literals
52
53// For string literals
54// NOLINTNEXTLINE(readability-identifier-naming)
55inline auto else_(CaseBuilder& builder, const char* value) {
56 return builder.else_(val(value));
57}
58
59// For string
60// NOLINTNEXTLINE(readability-identifier-naming)
61inline auto else_(CaseBuilder& builder, const std::string& value) {
62 return builder.else_(val(value));
63}
64
65// For integers
66// NOLINTNEXTLINE(readability-identifier-naming)
67inline auto else_(CaseBuilder& builder, int value) {
68 return builder.else_(val(value));
69}
70
71// For long integers
72// NOLINTNEXTLINE(readability-identifier-naming)
73inline auto else_(CaseBuilder& builder, long value) {
74 return builder.else_(val(value));
75}
76
77// For long long integers
78// NOLINTNEXTLINE(readability-identifier-naming)
79inline auto else_(CaseBuilder& builder, long long value) {
80 return builder.else_(val(value));
81}
82
83// For double
84// NOLINTNEXTLINE(readability-identifier-naming)
85inline auto else_(CaseBuilder& builder, double value) {
86 return builder.else_(val(value));
87}
88
89// For float
90// NOLINTNEXTLINE(readability-identifier-naming)
91inline auto else_(CaseBuilder& builder, float value) {
92 return builder.else_(val(value));
93}
94
95// For bool
96// NOLINTNEXTLINE(readability-identifier-naming)
97inline auto else_(CaseBuilder& builder, bool value) {
98 return builder.else_(val(value));
99}
100
101} // namespace relx::query
auto when(const ConditionExpr auto &when_cond, const Then &then)
Definition function.hpp:555
auto else_(const Else &else_expr)
Definition function.hpp:606
Concept for a condition expression.
Definition core.hpp:58
auto else_(CaseBuilder &builder, const char *value)
auto value(T val)
Create a value expression.
Definition value.hpp:120
auto val(const char *str)
Helper to create a value expression from a string literal.
Definition value.hpp:127
auto when(CaseBuilder &builder, const ConditionExpr auto &condition, const char *value)