From d62ca9f87906be6f046fe9d07afb8bfb69c166e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?louiz=E2=80=99?= Date: Fri, 16 Mar 2018 01:11:47 +0100 Subject: Use if constexpr to make things a lot more readable --- src/database/query.hpp | 41 +++++++++++++++-------------------------- 1 file changed, 15 insertions(+), 26 deletions(-) (limited to 'src/database/query.hpp') diff --git a/src/database/query.hpp b/src/database/query.hpp index 1c4a5ff..2a2d2d4 100644 --- a/src/database/query.hpp +++ b/src/database/query.hpp @@ -13,12 +13,12 @@ void actual_bind(Statement& statement, const std::string& value, int index); void actual_bind(Statement& statement, const std::int64_t& value, int index); -template ::value>* = 0> +void actual_bind(Statement& statement, const std::optional& value, int index); +template void actual_bind(Statement& statement, const T& value, int index) { actual_bind(statement, static_cast(value), index); } -void actual_bind(Statement& statement, const std::optional& value, int index); #ifdef DEBUG_SQL_QUERIES #include @@ -57,38 +57,27 @@ struct Query #endif }; -template -void add_param(Query& query, const ColumnType& column) -{ - std::cout << "add_param" << std::endl; - actual_add_param(query, column.value); -} - +void actual_add_param(Query& query, const std::string& val); +void actual_add_param(Query& query, const std::optional& val); template void actual_add_param(Query& query, const T& val) { query.params.push_back(std::to_string(val)); } -void actual_add_param(Query& query, const std::string& val); - -template -typename std::enable_if::value, Query&>::type -operator<<(Query& query, const T&) -{ - query.body += T::name; - return query; -} -void actual_add_param(Query& query, const std::optional& val); - Query& operator<<(Query& query, const char* str); Query& operator<<(Query& query, const std::string& str); -template -typename std::enable_if::value, Query&>::type -operator<<(Query& query, const Integer& i) +template +Query& operator<<(Query& query, const T& i) { - query.body += "$" + std::to_string(query.current_param++); - actual_add_param(query, i); + if constexpr(std::is_integral::value) + { + query.body += "$" + std::to_string(query.current_param++); + actual_add_param(query, i); + } + else + { + query.body += T::name; + } return query; } - -- cgit v1.2.3