9#include <userver/storages/postgres/io/buffer_io.hpp>
10#include <userver/storages/postgres/io/buffer_io_base.hpp>
11#include <userver/storages/postgres/io/integral_types.hpp>
12#include <userver/storages/postgres/io/type_mapping.hpp>
13#include <userver/utils/datetime/date.hpp>
15USERVER_NAMESPACE_BEGIN
17namespace storages::postgres {
20using Date = USERVER_NAMESPACE::utils::datetime::Date;
39struct BufferFormatter<Date> {
42 explicit BufferFormatter(Date value) : value{value} {}
44 template <
typename Buffer>
45 void operator()(
const UserTypes& types, Buffer& buffer) {
48 WriteBuffer(types, buffer, std::numeric_limits<Integer>::max());
50 WriteBuffer(types, buffer, std::numeric_limits<Integer>::min());
53 WriteBuffer(types, buffer, pg_days);
60struct BufferParser<Date> : detail::BufferParserBase<Date> {
61 using BaseType = detail::BufferParserBase<Date>;
63 using BaseType::BaseType;
65 void operator()(
const FieldBuffer& buffer) {
68 ReadBuffer(buffer, pg_days);
69 if (pg_days == std::numeric_limits<Integer>::max()) {
71 }
else if (pg_days == std::numeric_limits<Integer>::min()) {
80struct CppToSystemPg<Date> : PredefinedOid<PredefinedOids::kDate> {};