gnss-sim/3rdparty/boost/mysql/impl/meta_check_context.ipp

59 lines
1.8 KiB
C++

//
// Copyright (c) 2019-2024 Ruben Perez Hidalgo (rubenperez038 at gmail dot com)
//
// Distributed under the Boost Software License, Version 1.0. (See accompanying
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
//
#ifndef BOOST_MYSQL_IMPL_META_CHECK_CONTEXT_IPP
#define BOOST_MYSQL_IMPL_META_CHECK_CONTEXT_IPP
#pragma once
#include <boost/mysql/detail/typing/meta_check_context.hpp>
void boost::mysql::detail::meta_check_context::add_field_absent_error()
{
auto& stream = add_error();
stream << "Field ";
insert_field_name(stream);
if (has_field_names(name_table_))
{
stream << " is not present in the data returned by the server";
}
else
{
stream << " can't be mapped: there are more fields in your C++ data type than in your query";
}
}
void boost::mysql::detail::meta_check_context::add_type_mismatch_error(const char* cpp_type_name)
{
auto& stream = add_error();
stream << "Incompatible types for field ";
insert_field_name(stream);
stream << ": C++ type '" << cpp_type_name << "' is not compatible with DB type '"
<< column_type_to_str(current_meta()) << "'";
}
void boost::mysql::detail::meta_check_context::add_nullability_error()
{
auto& stream = add_error();
stream << "NULL checks failed for field ";
insert_field_name(stream);
stream << ": the database type may be NULL, but the C++ type cannot. Use std::optional<T> or "
"boost::optional<T>";
}
boost::mysql::error_code boost::mysql::detail::meta_check_context::check_errors(diagnostics& diag) const
{
if (errors_ != nullptr)
{
access::get_impl(diag).assign_client(errors_->str());
return client_errc::metadata_check_failed;
}
return error_code();
}
#endif