6#include <userver/formats/json_fwd.hpp>
8#include <userver/ydb/io/traits.hpp>
9#include <userver/ydb/types.hpp>
11namespace boost::uuids {
15USERVER_NAMESPACE_BEGIN
19template <
typename PrimitiveTrait>
21 static std::optional<
typename PrimitiveTrait::Type> Parse(NYdb::TValueParser& parser,
const ParseContext& context);
24 NYdb::TValueBuilderBase<NYdb::TValueBuilder>& builder,
25 const std::optional<
typename PrimitiveTrait::Type>& value
29 NYdb::TValueBuilderBase<NYdb::TParamValueBuilder>& builder,
30 const std::optional<
typename PrimitiveTrait::Type>& value
33 static NYdb::TType MakeType();
36template <
typename PrimitiveTrait>
38 static typename PrimitiveTrait::Type Parse(NYdb::TValueParser& parser,
const ParseContext& context);
41 Write(NYdb::TValueBuilderBase<NYdb::TValueBuilder>& builder,
const typename PrimitiveTrait::Type& value);
44 Write(NYdb::TValueBuilderBase<NYdb::TParamValueBuilder>& builder,
const typename PrimitiveTrait::Type& value);
46 static NYdb::TType MakeType();
51 static Type Parse(
const NYdb::TValueParser& value_parser);
52 template <
typename Builder>
53 static void Write(NYdb::TValueBuilderBase<Builder>& builder, Type value);
58 static Type Parse(
const NYdb::TValueParser& value_parser);
59 template <
typename Builder>
60 static void Write(NYdb::TValueBuilderBase<Builder>& builder, Type value);
65 static Type Parse(
const NYdb::TValueParser& value_parser);
66 template <
typename Builder>
67 static void Write(NYdb::TValueBuilderBase<Builder>& builder, Type value);
72 static Type Parse(
const NYdb::TValueParser& value_parser);
73 template <
typename Builder>
74 static void Write(NYdb::TValueBuilderBase<Builder>& builder, Type value);
79 static Type Parse(
const NYdb::TValueParser& value_parser);
80 template <
typename Builder>
81 static void Write(NYdb::TValueBuilderBase<Builder>& builder, Type value);
86 static Type Parse(
const NYdb::TValueParser& value_parser);
87 template <
typename Builder>
88 static void Write(NYdb::TValueBuilderBase<Builder>& builder, Type value);
92 using Type = std::string;
93 static Type Parse(
const NYdb::TValueParser& value_parser);
94 template <
typename Builder>
95 static void Write(NYdb::TValueBuilderBase<Builder>& builder,
const Type& value);
100 static Type Parse(
const NYdb::TValueParser& value_parser);
101 template <
typename Builder>
102 static void Write(NYdb::TValueBuilderBase<Builder>& builder,
const Type& value);
107 static Type Parse(
const NYdb::TValueParser& value_parser);
108 template <
typename Builder>
109 static void Write(NYdb::TValueBuilderBase<Builder>& builder, Type value);
113 using Type = boost::uuids::uuid;
114 static Type Parse(
const NYdb::TValueParser& value_parser);
115 template <
typename Builder>
116 static void Write(NYdb::TValueBuilderBase<Builder>& builder, Type value);
121 static Type Parse(
const NYdb::TValueParser& value_parser);
122 template <
typename Builder>
123 static void Write(NYdb::TValueBuilderBase<Builder>& builder,
const Type& value);
128 static Type Parse(
const NYdb::TValueParser& value_parser);
129 template <
typename Builder>
130 static void Write(NYdb::TValueBuilderBase<Builder>& builder,
const Type& value);
134struct ValueTraits<std::optional<JsonDocumentTrait::Type>> : OptionalPrimitiveTraits<JsonDocumentTrait> {};
137struct ValueTraits<JsonDocument> : PrimitiveTraits<JsonDocumentTrait> {};
140struct ValueTraits<std::optional<JsonTrait::Type>> : OptionalPrimitiveTraits<JsonTrait> {};
143struct ValueTraits<formats::json::Value> : PrimitiveTraits<JsonTrait> {};
146struct ValueTraits<std::optional<TimestampTrait::Type>> : OptionalPrimitiveTraits<TimestampTrait> {};
149struct ValueTraits<TimestampTrait::Type> : PrimitiveTraits<TimestampTrait> {};
152struct ValueTraits<std::optional<UuidTrait::Type>> : OptionalPrimitiveTraits<UuidTrait> {};
155struct ValueTraits<UuidTrait::Type> : PrimitiveTraits<UuidTrait> {};
158struct ValueTraits<std::optional<Utf8Trait::Type>> : OptionalPrimitiveTraits<Utf8Trait> {};
161struct ValueTraits<Utf8Trait::Type> : PrimitiveTraits<Utf8Trait> {};
164struct ValueTraits<std::optional<StringTrait::Type>> : OptionalPrimitiveTraits<StringTrait> {};
167struct ValueTraits<StringTrait::Type> : PrimitiveTraits<StringTrait> {};
170struct ValueTraits<std::optional<DoubleTrait::Type>> : OptionalPrimitiveTraits<DoubleTrait> {};
173struct ValueTraits<DoubleTrait::Type> : PrimitiveTraits<DoubleTrait> {};
176struct ValueTraits<std::optional<Uint64Trait::Type>> : OptionalPrimitiveTraits<Uint64Trait> {};
179struct ValueTraits<Uint64Trait::Type> : PrimitiveTraits<Uint64Trait> {};
182struct ValueTraits<std::optional<Int64Trait::Type>> : OptionalPrimitiveTraits<Int64Trait> {};
185struct ValueTraits<Int64Trait::Type> : PrimitiveTraits<Int64Trait> {};
188struct ValueTraits<std::optional<Uint32Trait::Type>> : OptionalPrimitiveTraits<Uint32Trait> {};
191struct ValueTraits<Uint32Trait::Type> : PrimitiveTraits<Uint32Trait> {};
194struct ValueTraits<std::optional<Int32Trait::Type>> : OptionalPrimitiveTraits<Int32Trait> {};
197struct ValueTraits<Int32Trait::Type> : PrimitiveTraits<Int32Trait> {};
200struct ValueTraits<std::optional<BoolTrait::Type>> : OptionalPrimitiveTraits<BoolTrait> {};
203struct ValueTraits<BoolTrait::Type> : PrimitiveTraits<BoolTrait> {};