drogon
C++14/17-based HTTP application framework
Toggle main menu visibility
Loading...
Searching...
No Matches
Result.h
Go to the documentation of this file.
1
14
15
// Taken from libpqxx and modified.
16
// The license for libpqxx can be found in the COPYING file.
17
18
#pragma once
19
20
#include <drogon/exports.h>
21
#include <memory>
22
#include <string>
23
#include <future>
24
#include <algorithm>
25
#include <assert.h>
26
27
namespace
drogon
28
{
29
namespace
orm
30
{
31
class
ConstResultIterator
;
32
class
ConstReverseResultIterator
;
33
class
Row
;
34
class
ResultImpl;
35
using
ResultImplPtr = std::shared_ptr<ResultImpl>;
36
37
enum class
SqlStatus
38
{
39
Ok,
40
End
41
};
42
44
57
class
DROGON_EXPORT Result
58
{
59
public
:
60
explicit
Result(ResultImplPtr ptr) : resultPtr_(std::move(ptr))
61
{
62
}
63
64
Result(
const
Result &r)
noexcept
=
default
;
65
Result(Result &&)
noexcept
=
default
;
66
Result &operator=(
const
Result &r)
noexcept
;
67
Result &operator=(Result &&)
noexcept
;
68
using
DifferenceType = long;
69
using
SizeType = size_t;
70
using
Reference = Row;
71
using
ConstIterator =
ConstResultIterator
;
72
using
Iterator = ConstIterator;
73
using
RowSizeType =
unsigned
long;
74
using
FieldSizeType =
unsigned
long;
75
76
using
ConstReverseIterator =
ConstReverseResultIterator
;
77
using
ReverseIterator = ConstReverseIterator;
78
79
// C++ type type definition compatibility
80
using
value_type = Row;
81
using
size_type = SizeType;
82
using
difference_type = DifferenceType;
83
using
reference = Reference;
84
using
const_reference =
const
Reference;
85
using
iterator = Iterator;
86
using
const_iterator = ConstIterator;
87
using
reverse_iterator = ConstReverseIterator;
88
using
const_reverse_iterator = ConstReverseIterator;
89
90
SizeType size()
const
noexcept
;
91
92
SizeType capacity()
const
noexcept
93
{
94
return
size();
95
}
96
97
ConstIterator begin()
const
noexcept
;
98
ConstIterator cbegin()
const
noexcept
;
99
ConstIterator end()
const
noexcept
;
100
ConstIterator cend()
const
noexcept
;
101
102
ConstReverseIterator rbegin()
const
;
103
ConstReverseIterator crbegin()
const
;
104
ConstReverseIterator rend()
const
;
105
ConstReverseIterator crend()
const
;
106
107
bool
empty()
const
noexcept
108
{
109
return
size() == 0;
110
}
111
112
Reference front()
const
noexcept
;
113
Reference back()
const
noexcept
;
114
115
Reference operator[](SizeType index)
const
noexcept
;
116
Reference at(SizeType index)
const
;
117
void
swap(Result &)
noexcept
;
118
120
RowSizeType
columns
() const noexcept;
121
123
const
char
*
columnName
(RowSizeType number) const;
124
127
131
SizeType
affectedRows
() const noexcept;
132
135
140
unsigned
long
long
insertId
() const noexcept;
141
142
#ifdef _MSC_VER
143
Result() noexcept = default;
144
#endif
145
146
private
:
147
ResultImplPtr resultPtr_;
148
149
friend
class
Field;
150
friend
class
Row;
152
RowSizeType columnNumber(
const
char
colName[])
const
;
153
155
RowSizeType columnNumber(
const
std::string &name)
const
156
{
157
return
columnNumber(name.c_str());
158
}
159
161
int
oid(RowSizeType column)
const
noexcept
;
162
163
const
char
*getValue(SizeType row, RowSizeType column)
const
;
164
bool
isNull(SizeType row, RowSizeType column)
const
;
165
FieldSizeType getLength(SizeType row, RowSizeType column)
const
;
166
};
167
168
inline
void
swap(Result &one, Result &two)
noexcept
169
{
170
one.swap(two);
171
}
172
}
// namespace orm
173
}
// namespace drogon
174
175
#ifndef _MSC_VER
176
namespace
std
177
{
178
template
<>
179
inline
void
swap(drogon::orm::Result &one, drogon::orm::Result &two)
noexcept
180
{
181
one.swap(two);
182
}
183
}
// namespace std
184
#endif
drogon::orm::ConstResultIterator
Definition
ResultIterator.h:28
drogon::orm::ConstReverseResultIterator
Definition
ResultIterator.h:120
drogon::orm::Result::columnName
const char * columnName(RowSizeType number) const
Name of column with this number (throws exception if it doesn't exist).
drogon::orm::Result::insertId
unsigned long long insertId() const noexcept
drogon::orm::Result::affectedRows
SizeType affectedRows() const noexcept
drogon::orm::Result::columns
RowSizeType columns() const noexcept
Number of columns in result.
drogon::orm::Row
Reference to one row in a result.
Definition
Row.h:47
drogon
Drogon Test is a minimal effort test framework developed because the major C++ test frameworks doesn'...
Definition
Attribute.h:23
std
STL namespace.
orm_lib
inc
drogon
orm
Result.h
Generated by
1.17.0