userver: userver/storages/postgres/io/uuid.hpp Source File
Loading...
Searching...
No Matches
uuid.hpp
Go to the documentation of this file.
1#pragma once
2
3/// @file userver/storages/postgres/io/uuid.hpp
4/// @brief UUID (boost::uuids::uuid) I/O support
5/// @ingroup userver_postgres_parse_and_format
6
7#include <userver/storages/postgres/io/buffer_io.hpp>
8#include <userver/storages/postgres/io/buffer_io_base.hpp>
9#include <userver/storages/postgres/io/type_mapping.hpp>
10
11namespace boost::uuids {
12struct uuid;
13}
14
15USERVER_NAMESPACE_BEGIN
16
17namespace storages::postgres::io {
18
19template <>
20struct BufferFormatter<boost::uuids::uuid> : detail::BufferFormatterBase<boost::uuids::uuid> {
21 using BaseType = detail::BufferFormatterBase<boost::uuids::uuid>;
22 using BaseType::BaseType;
23
24 void operator()(const UserTypes&, std::vector<char>& buf) const;
25 void operator()(const UserTypes&, std::string& buf) const;
26};
27
28template <>
29struct BufferParser<boost::uuids::uuid> : detail::BufferParserBase<boost::uuids::uuid> {
30 using BaseType = detail::BufferParserBase<boost::uuids::uuid>;
31 using BaseType::BaseType;
32
33 void operator()(const FieldBuffer& buf);
34};
35
36template <>
37struct CppToSystemPg<boost::uuids::uuid> : PredefinedOid<PredefinedOids::kUuid> {};
38
39} // namespace storages::postgres::io
40
41USERVER_NAMESPACE_END