ORM C++
Toggle main menu visibility
Loading...
Searching...
No Matches
update.hpp
1
#pragma once
2
3
#include <optional>
4
#include <utility>
5
6
#include "query/UpdateSpec.hpp"
7
8
namespace
orm
9
{
10
class
DatabaseCore
;
11
template
<
typename
SchemaType>
12
class
Database
;
13
14
template
<
typename
T>
15
class
Update
16
{
17
public
:
18
Update() =
default
;
19
20
template
<
typename
Value>
21
auto
set(query::Column column, Value value) -> Update<T>&
22
{
23
data.assignments.push_back(query::UpdateAssignment{
24
.column = std::move(column), .value = query::UpdateValue{.value = query::QueryValue{std::move(value)}}});
25
26
return
*
this
;
27
}
28
29
template
<
typename
Value>
30
auto
set(query::Column column,
const
std::optional<Value>& value) -> Update<T>&
31
{
32
if
(value.has_value())
33
{
34
data.assignments.push_back(query::UpdateAssignment{
35
.column = std::move(column), .value = query::UpdateValue{.value = query::QueryValue{value.value()}}});
36
}
37
else
38
{
39
set(std::move(column), std::nullopt);
40
}
41
42
return
*
this
;
43
}
44
45
auto
set(query::Column column, std::nullopt_t) -> Update<T>&
46
{
47
data.assignments.push_back(query::UpdateAssignment{.column = std::move(column), .value = query::UpdateValue{}});
48
49
return
*
this
;
50
}
51
52
auto
where(
const
query::Predicate& predicate) -> Update<T>&
53
{
54
data.predicate = predicate;
55
56
return
*
this
;
57
}
58
59
auto
andWhere(
const
query::Predicate& predicate) -> Update<T>&
60
{
61
data.predicate = data.predicate.has_value() ? data.predicate.value() && predicate : predicate;
62
63
return
*
this
;
64
}
65
66
auto
orWhere(
const
query::Predicate& predicate) -> Update<T>&
67
{
68
data.predicate = data.predicate.has_value() ? data.predicate.value() || predicate : predicate;
69
70
return
*
this
;
71
}
72
73
private
:
74
template
<
typename
>
75
friend
class
orm::Database
;
76
friend
class
orm::DatabaseCore
;
77
78
[[nodiscard]]
auto
getData()
const
->
const
query::UpdateSpec&
79
{
80
return
data;
81
}
82
83
query::UpdateSpec data;
84
};
85
}
// namespace orm
orm::DatabaseCore
A class representing a database in the ORM framework.
Definition
database.hpp:67
orm::Database
Database facade bound to one closed compile-time model schema.
Definition
database.hpp:704
include
orm-cxx
update.hpp
Generated by
1.17.0