run_check and prepare_check now contain the serialize check

This commit is contained in:
rbock
2015-09-17 11:46:37 +02:00
parent abdecc25da
commit e152e29107
2 changed files with 43 additions and 44 deletions

View File

@@ -321,36 +321,6 @@ namespace sqlpp
template <typename T>
using consistency_check_t = typename consistency_check<T>::type;
template <typename T, typename Enable = void>
struct run_check
{
using type = assert_run_statement_or_prepared_t;
};
template <typename T>
struct run_check<T, typename std::enable_if<is_statement_t<T>::value or is_prepared_statement_t<T>::value>::type>
{
using type = typename T::_run_check;
};
template <typename T>
using run_check_t = typename run_check<T>::type;
template <typename T, typename Enable = void>
struct prepare_check
{
using type = assert_prepare_statement_t;
};
template <typename T>
struct prepare_check<T, typename std::enable_if<is_statement_t<T>::value>::type>
{
using type = typename T::_prepare_check;
};
template <typename T>
using prepare_check_t = typename prepare_check<T>::type;
template <typename Context, typename T, typename Enable = void>
struct serialize_check
{
@@ -366,6 +336,40 @@ namespace sqlpp
template <typename Context, typename T>
using serialize_check_t = typename serialize_check<Context, T>::type;
template <typename Context, typename T, typename Enable = void>
struct run_check
{
using type = assert_run_statement_or_prepared_t;
};
template <typename Context, typename T>
struct run_check<Context,
T,
typename std::enable_if<is_statement_t<T>::value or is_prepared_statement_t<T>::value>::type>
{
using type =
detail::get_first_if<is_inconsistent_t, consistent_t, typename T::_run_check, serialize_check_t<Context, T>>;
};
template <typename Context, typename T>
using run_check_t = typename run_check<Context, T>::type;
template <typename Context, typename T, typename Enable = void>
struct prepare_check
{
using type = assert_prepare_statement_t;
};
template <typename Context, typename T>
struct prepare_check<Context, T, typename std::enable_if<is_statement_t<T>::value>::type>
{
using type = detail::
get_first_if<is_inconsistent_t, consistent_t, typename T::_prepare_check, serialize_check_t<Context, T>>;
};
template <typename Context, typename T>
using prepare_check_t = typename prepare_check<Context, T>::type;
template <typename Statement, typename Enable = void>
struct has_result_row_impl
{

View File

@@ -115,16 +115,13 @@ struct MockDbT : public sqlpp::connection
}
template <typename T>
auto _run(const T& t, const std::false_type&) -> decltype(t._run(*this));
auto _run(const T& t, const std::false_type&) -> void;
template <typename T>
auto operator()(const T& t) -> decltype(t._run(*this))
auto operator()(const T& t) -> decltype(this->_run(t, typename sqlpp::run_check_t<_serializer_context_t, T>::type{}))
{
sqlpp::run_check_t<T>::_();
sqlpp::serialize_check_t<_serializer_context_t, T>::_();
using _ok = sqlpp::logic::all_t<sqlpp::run_check_t<T>::type::value,
sqlpp::serialize_check_t<_serializer_context_t, T>::type::value>;
return _run(t, _ok{});
sqlpp::run_check_t<_serializer_context_t, T>::_();
return _run(t, typename sqlpp::run_check_t<_serializer_context_t, T>::type{});
}
size_t execute(const std::string&)
@@ -189,16 +186,14 @@ struct MockDbT : public sqlpp::connection
}
template <typename T>
auto _prepare(const T& t, const std::false_type&) -> decltype(t._prepare(*this));
auto _prepare(const T& t, const std::false_type&) -> void;
template <typename T>
auto prepare(const T& t) -> decltype(t._prepare(*this))
auto prepare(const T& t)
-> decltype(this->_prepare(t, typename sqlpp::prepare_check_t<_serializer_context_t, T>::type{}))
{
sqlpp::prepare_check_t<T>::_();
sqlpp::serialize_check_t<_serializer_context_t, T>::_();
using _ok = sqlpp::logic::all_t<sqlpp::prepare_check_t<T>::type::value,
sqlpp::serialize_check_t<_serializer_context_t, T>::type::value>;
return _prepare(t, _ok{});
sqlpp::prepare_check_t<_serializer_context_t, T>::_();
return _prepare(t, typename sqlpp::prepare_check_t<_serializer_context_t, T>::type{});
}
template <typename Statement>