// // Copyright (c) 2019-2025 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_DETAIL_ANY_EXECUTION_REQUEST_HPP #define BOOST_MYSQL_DETAIL_ANY_EXECUTION_REQUEST_HPP #include #include #include #include #include #include namespace boost { namespace mysql { class field_view; class format_arg; namespace detail { struct any_execution_request { enum class type_t { query, query_with_params, stmt }; union data_t { string_view query; struct query_with_params_t { constant_string_view query; span args; } query_with_params; struct stmt_t { std::uint32_t stmt_id; std::uint16_t num_params; span params; } stmt; data_t(string_view q) noexcept : query(q) {} data_t(query_with_params_t v) noexcept : query_with_params(v) {} data_t(stmt_t v) noexcept : stmt(v) {} }; type_t type; data_t data; any_execution_request(string_view q) noexcept : type(type_t::query), data(q) {} any_execution_request(data_t::query_with_params_t v) noexcept : type(type_t::query_with_params), data(v) { } any_execution_request(data_t::stmt_t v) noexcept : type(type_t::stmt), data(v) {} }; struct no_execution_request_traits { }; template struct execution_request_traits : no_execution_request_traits { }; template struct execution_request_traits::value>::type> { static any_execution_request make_request(string_view input, std::vector&) { return input; } }; } // namespace detail } // namespace mysql } // namespace boost #endif