userver
C++ Async Framework
Toggle main menu visibility
Loading...
Searching...
No Matches
primitives.hpp
Go to the documentation of this file.
1
#
pragma
once
2
3
/// @file userver/ydb/io/primitives.hpp
4
/// @brief YDB primitive type serialization traits
5
6
#
include
<
optional
>
7
#
include
<
string
>
8
9
#
include
<
userver
/
formats
/
json_fwd
.
hpp
>
10
11
#
include
<
userver
/
ydb
/
io
/
traits
.
hpp
>
12
#
include
<
userver
/
ydb
/
types
.
hpp
>
13
14
namespace
boost::
uuids
{
15
struct
uuid;
16
}
17
18
USERVER_NAMESPACE_BEGIN
19
20
namespace
ydb {
21
22
template
<
typename
PrimitiveTrait>
23
struct
OptionalPrimitiveTraits
{
24
static
std::optional<
typename
PrimitiveTrait::Type> Parse(NYdb::TValueParser& parser,
const
ParseContext& context);
25
26
static
void
Write(
27
NYdb::TValueBuilderBase<NYdb::TValueBuilder>& builder,
28
const
std::optional<
typename
PrimitiveTrait::Type>& value
29
);
30
31
static
void
Write(
32
NYdb::TValueBuilderBase<NYdb::TParamValueBuilder>& builder,
33
const
std::optional<
typename
PrimitiveTrait::Type>& value
34
);
35
36
static
NYdb::TType MakeType();
37
};
38
39
template
<
typename
PrimitiveTrait>
40
struct
PrimitiveTraits
{
41
static
typename
PrimitiveTrait::Type Parse(NYdb::TValueParser& parser,
const
ParseContext& context);
42
43
static
void
Write(
44
NYdb::TValueBuilderBase<NYdb::TValueBuilder>& builder,
45
const
typename
PrimitiveTrait::Type& value
46
);
47
48
static
void
Write(
49
NYdb::TValueBuilderBase<NYdb::TParamValueBuilder>& builder,
50
const
typename
PrimitiveTrait::Type& value
51
);
52
53
static
NYdb::TType MakeType();
54
};
55
56
struct
BoolTrait
{
57
using
Type =
bool
;
58
static
Type Parse(
const
NYdb::TValueParser& value_parser);
59
template
<
typename
Builder>
60
static
void
Write(NYdb::TValueBuilderBase<Builder>& builder, Type value);
61
};
62
63
struct
Int8Trait
{
64
using
Type = std::int8_t;
65
static
Type Parse(
const
NYdb::TValueParser& value_parser);
66
template
<
typename
Builder>
67
static
void
Write(NYdb::TValueBuilderBase<Builder>& builder, Type value);
68
};
69
70
struct
Uint8Trait
{
71
using
Type = std::uint8_t;
72
static
Type Parse(
const
NYdb::TValueParser& value_parser);
73
template
<
typename
Builder>
74
static
void
Write(NYdb::TValueBuilderBase<Builder>& builder, Type value);
75
};
76
77
struct
Int16Trait
{
78
using
Type = std::int16_t;
79
static
Type Parse(
const
NYdb::TValueParser& value_parser);
80
template
<
typename
Builder>
81
static
void
Write(NYdb::TValueBuilderBase<Builder>& builder, Type value);
82
};
83
84
struct
Uint16Trait
{
85
using
Type = std::uint16_t;
86
static
Type Parse(
const
NYdb::TValueParser& value_parser);
87
template
<
typename
Builder>
88
static
void
Write(NYdb::TValueBuilderBase<Builder>& builder, Type value);
89
};
90
91
struct
Int32Trait
{
92
using
Type = std::int32_t;
93
static
Type Parse(
const
NYdb::TValueParser& value_parser);
94
template
<
typename
Builder>
95
static
void
Write(NYdb::TValueBuilderBase<Builder>& builder, Type value);
96
};
97
98
struct
Uint32Trait
{
99
using
Type = std::uint32_t;
100
static
Type Parse(
const
NYdb::TValueParser& value_parser);
101
template
<
typename
Builder>
102
static
void
Write(NYdb::TValueBuilderBase<Builder>& builder, Type value);
103
};
104
105
struct
Int64Trait
{
106
using
Type = std::int64_t;
107
static
Type Parse(
const
NYdb::TValueParser& value_parser);
108
template
<
typename
Builder>
109
static
void
Write(NYdb::TValueBuilderBase<Builder>& builder, Type value);
110
};
111
112
struct
Uint64Trait
{
113
using
Type = std::uint64_t;
114
static
Type Parse(
const
NYdb::TValueParser& value_parser);
115
template
<
typename
Builder>
116
static
void
Write(NYdb::TValueBuilderBase<Builder>& builder, Type value);
117
};
118
119
struct
DoubleTrait
{
120
using
Type =
double
;
121
static
Type Parse(
const
NYdb::TValueParser& value_parser);
122
template
<
typename
Builder>
123
static
void
Write(NYdb::TValueBuilderBase<Builder>& builder, Type value);
124
};
125
126
struct
StringTrait
{
127
using
Type = std::string;
128
static
Type Parse(
const
NYdb::TValueParser& value_parser);
129
template
<
typename
Builder>
130
static
void
Write(NYdb::TValueBuilderBase<Builder>& builder,
const
Type& value);
131
};
132
133
struct
Utf8Trait
{
134
using
Type = Utf8;
135
static
Type Parse(
const
NYdb::TValueParser& value_parser);
136
template
<
typename
Builder>
137
static
void
Write(NYdb::TValueBuilderBase<Builder>& builder,
const
Type& value);
138
};
139
140
struct
TimestampTrait
{
141
using
Type = Timestamp;
142
static
Type Parse(
const
NYdb::TValueParser& value_parser);
143
template
<
typename
Builder>
144
static
void
Write(NYdb::TValueBuilderBase<Builder>& builder, Type value);
145
};
146
147
struct
UuidTrait
{
148
using
Type = boost::
uuids
::uuid;
149
static
Type Parse(
const
NYdb::TValueParser& value_parser);
150
template
<
typename
Builder>
151
static
void
Write(NYdb::TValueBuilderBase<Builder>& builder, Type value);
152
};
153
154
struct
JsonTrait
{
155
using
Type = formats::
json
::
Value
;
156
static
Type Parse(
const
NYdb::TValueParser& value_parser);
157
template
<
typename
Builder>
158
static
void
Write(NYdb::TValueBuilderBase<Builder>& builder,
const
Type& value);
159
};
160
161
struct
JsonDocumentTrait
{
162
using
Type = JsonDocument;
163
static
Type Parse(
const
NYdb::TValueParser& value_parser);
164
template
<
typename
Builder>
165
static
void
Write(NYdb::TValueBuilderBase<Builder>& builder,
const
Type& value);
166
};
167
168
template
<>
169
struct
ValueTraits
<std::optional<
JsonDocumentTrait
::Type>> :
OptionalPrimitiveTraits
<
JsonDocumentTrait
> {};
170
171
template
<>
172
struct
ValueTraits
<JsonDocument> :
PrimitiveTraits
<
JsonDocumentTrait
> {};
173
174
template
<>
175
struct
ValueTraits
<std::optional<
JsonTrait
::Type>> :
OptionalPrimitiveTraits
<
JsonTrait
> {};
176
177
template
<>
178
struct
ValueTraits
<formats::
json
::
Value
> :
PrimitiveTraits
<
JsonTrait
> {};
179
180
template
<>
181
struct
ValueTraits
<std::optional<
TimestampTrait
::Type>> :
OptionalPrimitiveTraits
<
TimestampTrait
> {};
182
183
template
<>
184
struct
ValueTraits
<
TimestampTrait
::Type> :
PrimitiveTraits
<
TimestampTrait
> {};
185
186
template
<>
187
struct
ValueTraits
<std::optional<
UuidTrait
::Type>> :
OptionalPrimitiveTraits
<
UuidTrait
> {};
188
189
template
<>
190
struct
ValueTraits
<
UuidTrait
::Type> :
PrimitiveTraits
<
UuidTrait
> {};
191
192
template
<>
193
struct
ValueTraits
<std::optional<
Utf8Trait
::Type>> :
OptionalPrimitiveTraits
<
Utf8Trait
> {};
194
195
template
<>
196
struct
ValueTraits
<
Utf8Trait
::Type> :
PrimitiveTraits
<
Utf8Trait
> {};
197
198
template
<>
199
struct
ValueTraits
<std::optional<
StringTrait
::Type>> :
OptionalPrimitiveTraits
<
StringTrait
> {};
200
201
template
<>
202
struct
ValueTraits
<
StringTrait
::Type> :
PrimitiveTraits
<
StringTrait
> {};
203
204
template
<>
205
struct
ValueTraits
<std::optional<
DoubleTrait
::Type>> :
OptionalPrimitiveTraits
<
DoubleTrait
> {};
206
207
template
<>
208
struct
ValueTraits
<
DoubleTrait
::Type> :
PrimitiveTraits
<
DoubleTrait
> {};
209
210
template
<>
211
struct
ValueTraits
<std::optional<
Uint64Trait
::Type>> :
OptionalPrimitiveTraits
<
Uint64Trait
> {};
212
213
template
<>
214
struct
ValueTraits
<
Uint64Trait
::Type> :
PrimitiveTraits
<
Uint64Trait
> {};
215
216
template
<>
217
struct
ValueTraits
<std::optional<
Int64Trait
::Type>> :
OptionalPrimitiveTraits
<
Int64Trait
> {};
218
219
template
<>
220
struct
ValueTraits
<
Int64Trait
::Type> :
PrimitiveTraits
<
Int64Trait
> {};
221
222
template
<>
223
struct
ValueTraits
<std::optional<
Uint32Trait
::Type>> :
OptionalPrimitiveTraits
<
Uint32Trait
> {};
224
225
template
<>
226
struct
ValueTraits
<
Uint32Trait
::Type> :
PrimitiveTraits
<
Uint32Trait
> {};
227
228
template
<>
229
struct
ValueTraits
<std::optional<
Int32Trait
::Type>> :
OptionalPrimitiveTraits
<
Int32Trait
> {};
230
231
template
<>
232
struct
ValueTraits
<
Int32Trait
::Type> :
PrimitiveTraits
<
Int32Trait
> {};
233
234
template
<>
235
struct
ValueTraits
<std::optional<
Uint16Trait
::Type>> :
OptionalPrimitiveTraits
<
Uint16Trait
> {};
236
237
template
<>
238
struct
ValueTraits
<
Uint16Trait
::Type> :
PrimitiveTraits
<
Uint16Trait
> {};
239
240
template
<>
241
struct
ValueTraits
<std::optional<
Int16Trait
::Type>> :
OptionalPrimitiveTraits
<
Int16Trait
> {};
242
243
template
<>
244
struct
ValueTraits
<
Int16Trait
::Type> :
PrimitiveTraits
<
Int16Trait
> {};
245
246
template
<>
247
struct
ValueTraits
<std::optional<
Uint8Trait
::Type>> :
OptionalPrimitiveTraits
<
Uint8Trait
> {};
248
249
template
<>
250
struct
ValueTraits
<
Uint8Trait
::Type> :
PrimitiveTraits
<
Uint8Trait
> {};
251
252
template
<>
253
struct
ValueTraits
<std::optional<
Int8Trait
::Type>> :
OptionalPrimitiveTraits
<
Int8Trait
> {};
254
255
template
<>
256
struct
ValueTraits
<
Int8Trait
::Type> :
PrimitiveTraits
<
Int8Trait
> {};
257
258
template
<>
259
struct
ValueTraits
<std::optional<
BoolTrait
::Type>> :
OptionalPrimitiveTraits
<
BoolTrait
> {};
260
261
template
<>
262
struct
ValueTraits
<
BoolTrait
::Type> :
PrimitiveTraits
<
BoolTrait
> {};
263
264
}
// namespace ydb
265
266
USERVER_NAMESPACE_END
userver
ydb
io
primitives.hpp
Generated on
for userver by
Doxygen
1.17.0