From f1542507ff6fc78cf1dfb32010267d83a4aa2dc9 Mon Sep 17 00:00:00 2001 From: rbock Date: Fri, 15 Aug 2014 18:11:24 +0200 Subject: [PATCH] Moved tests for insert_into(t).columns(...) into function This reduces and clarifies error messages a bit. --- include/sqlpp11/insert_value_list.h | 34 ++++++++++++++--------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/include/sqlpp11/insert_value_list.h b/include/sqlpp11/insert_value_list.h index 7c5be7ce..768e789b 100644 --- a/include/sqlpp11/insert_value_list.h +++ b/include/sqlpp11/insert_value_list.h @@ -228,17 +228,8 @@ namespace sqlpp using _traits = make_traits; using _recursive_traits = make_recursive_traits; - static_assert(sizeof...(Columns), "at least one column required in columns()"); - - static_assert(not ::sqlpp::detail::has_duplicates::value, "at least one duplicate argument detected in columns()"); - - static_assert(::sqlpp::detail::all_t::value...>::value, "at least one argument is not a column in columns()"); - - static_assert(::sqlpp::detail::none_t::value...>::value, "at least one column argument has a must_not_insert flag in its definition"); - using _value_tuple_t = typename column_list_data_t::_value_tuple_t; - static_assert(required_tables_of::size::value == 1, "columns from multiple tables in columns()"); // Data using _data_t = column_list_data_t; @@ -351,16 +342,23 @@ namespace sqlpp return { *static_cast(this), insert_default_values_data_t{} }; } - template - auto columns(Args... args) - -> _new_statement_t> + template + auto columns(Columns... columns) + -> _new_statement_t> { - static_assert(sizeof...(Args), "at least one column expression required in columns()"); - using _table = typename detail::first_arg_t::_table; + static_assert(sizeof...(Columns), "at least one column required in columns()"); + static_assert(not ::sqlpp::detail::has_duplicates::value, "at least one duplicate argument detected in columns()"); + static_assert(::sqlpp::detail::all_t::value...>::value, "at least one argument is not a column in columns()"); + static_assert(::sqlpp::detail::none_t::value...>::value, "at least one column argument has a must_not_insert tag in its definition"); + using _column_required_tables = ::sqlpp::detail::make_joined_set_t...>; + static_assert(_column_required_tables::size::value == 1, "columns() contains columns from several tables"); + + using _table = typename detail::first_arg_t::_table; using required_columns = typename _table::_required_insert_columns; - using columns = detail::make_type_set_t; - static_assert(detail::is_subset_of::value, "At least one required column is missing in columns()"); - return { *static_cast(this), column_list_data_t{args...} }; + using set_columns = detail::make_type_set_t; + static_assert(detail::is_subset_of::value, "At least one required column is missing in columns()"); + + return { *static_cast(this), column_list_data_t{columns...} }; } template @@ -368,6 +366,8 @@ namespace sqlpp -> _new_statement_t> { static_assert(sizeof...(Assignments), "at least one assignment expression required in set()"); + static_assert(sqlpp::detail::all_t::value...>::value, "at least one argument is not an assignment in set()"); + using _table = typename detail::first_arg_t::_lhs_t::_table; using required_columns = typename _table::_required_insert_columns; using columns = detail::make_type_set_t;