Revert "Use if constexpr to make things a lot more readable"

This reverts commit d62ca9f879.
This commit is contained in:
louiz’
2018-03-17 17:28:41 +01:00
parent d62ca9f879
commit d0e3c71b91
7 changed files with 213 additions and 164 deletions
+27 -16
View File
@@ -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);
void actual_bind(Statement& statement, const std::optional<bool>& value, int index);
template <typename T>
template <typename T, typename std::enable_if_t<std::is_integral<T>::value>* = 0>
void actual_bind(Statement& statement, const T& value, int index)
{
actual_bind(statement, static_cast<std::int64_t>(value), index);
}
void actual_bind(Statement& statement, const std::optional<bool>& value, int index);
#ifdef DEBUG_SQL_QUERIES
#include <utils/scopetimer.hpp>
@@ -57,27 +57,38 @@ struct Query
#endif
};
void actual_add_param(Query& query, const std::string& val);
void actual_add_param(Query& query, const std::optional<bool>& val);
template <typename ColumnType>
void add_param(Query& query, const ColumnType& column)
{
std::cout << "add_param<ColumnType>" << std::endl;
actual_add_param(query, column.value);
}
template <typename T>
void actual_add_param(Query& query, const T& val)
{
query.params.push_back(std::to_string(val));
}
Query& operator<<(Query& query, const char* str);
Query& operator<<(Query& query, const std::string& str);
void actual_add_param(Query& query, const std::string& val);
template <typename T>
Query& operator<<(Query& query, const T& i)
typename std::enable_if<!std::is_integral<T>::value, Query&>::type
operator<<(Query& query, const T&)
{
if constexpr(std::is_integral<T>::value)
{
query.body += "$" + std::to_string(query.current_param++);
actual_add_param(query, i);
}
else
{
query.body += T::name;
}
query.body += T::name;
return query;
}
void actual_add_param(Query& query, const std::optional<bool>& val);
Query& operator<<(Query& query, const char* str);
Query& operator<<(Query& query, const std::string& str);
template <typename Integer>
typename std::enable_if<std::is_integral<Integer>::value, Query&>::type
operator<<(Query& query, const Integer& i)
{
query.body += "$" + std::to_string(query.current_param++);
actual_add_param(query, i);
return query;
}