summaryrefslogtreecommitdiff
path: root/src/database
diff options
context:
space:
mode:
authorlouiz’ <louiz@louiz.org>2018-03-17 17:33:17 +0100
committerlouiz’ <louiz@louiz.org>2018-03-17 17:34:00 +0100
commitf8a1048ffeec6322c1e64a0eda7636a977669898 (patch)
treee5e4f8055e73437318a36bddebd1c6d426fdce8e /src/database
parentb956b9d1aa27ac71432839e286f3db0a19aebf6b (diff)
downloadbiboumi-f8a1048ffeec6322c1e64a0eda7636a977669898.tar.gz
biboumi-f8a1048ffeec6322c1e64a0eda7636a977669898.tar.bz2
biboumi-f8a1048ffeec6322c1e64a0eda7636a977669898.tar.xz
biboumi-f8a1048ffeec6322c1e64a0eda7636a977669898.zip
Re-apply "Use std::optional<bool> instead of OptionalBool"
This reverts commit 03714c6cebf90dc7db8e3997a18cdd19e039c667.
Diffstat (limited to 'src/database')
-rw-r--r--src/database/database.hpp2
-rw-r--r--src/database/query.cpp12
-rw-r--r--src/database/query.hpp4
-rw-r--r--src/database/select_query.hpp9
4 files changed, 13 insertions, 14 deletions
diff --git a/src/database/database.hpp b/src/database/database.hpp
index 8a967d8..03d82ae 100644
--- a/src/database/database.hpp
+++ b/src/database/database.hpp
@@ -69,7 +69,7 @@ class Database
struct RecordHistory: Column<bool> { static constexpr auto name = "recordhistory_";
RecordHistory(): Column<bool>(true) {}};
- struct RecordHistoryOptional: Column<OptionalBool> { static constexpr auto name = "recordhistory_"; };
+ struct RecordHistoryOptional: Column<std::optional<bool>> { static constexpr auto name = "recordhistory_"; };
struct VerifyCert: Column<bool> { static constexpr auto name = "verifycert_";
VerifyCert(): Column<bool>(true) {} };
diff --git a/src/database/query.cpp b/src/database/query.cpp
index d72066e..13c881b 100644
--- a/src/database/query.cpp
+++ b/src/database/query.cpp
@@ -11,11 +11,11 @@ void actual_bind(Statement& statement, const std::int64_t& value, int index)
statement.bind_int64(index, value);
}
-void actual_bind(Statement& statement, const OptionalBool& value, int index)
+void actual_bind(Statement& statement, const std::optional<bool>& value, int index)
{
- if (!value.is_set)
+ if (!value)
statement.bind_int64(index, 0);
- else if (value.value)
+ else if (*value)
statement.bind_int64(index, 1);
else
statement.bind_int64(index, -1);
@@ -26,11 +26,11 @@ void actual_add_param(Query& query, const std::string& val)
query.params.push_back(val);
}
-void actual_add_param(Query& query, const OptionalBool& val)
+void actual_add_param(Query& query, const std::optional<bool>& val)
{
- if (!val.is_set)
+ if (!val)
query.params.push_back("0");
- else if (val.value)
+ else if (*val)
query.params.push_back("1");
else
query.params.push_back("-1");
diff --git a/src/database/query.hpp b/src/database/query.hpp
index ba28b1a..1c4a5ff 100644
--- a/src/database/query.hpp
+++ b/src/database/query.hpp
@@ -18,7 +18,7 @@ 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 OptionalBool& value, int index);
+void actual_bind(Statement& statement, const std::optional<bool>& value, int index);
#ifdef DEBUG_SQL_QUERIES
#include <utils/scopetimer.hpp>
@@ -71,7 +71,6 @@ void actual_add_param(Query& query, const T& val)
}
void actual_add_param(Query& query, const std::string& val);
-void actual_add_param(Query& query, const OptionalBool& val);
template <typename T>
typename std::enable_if<!std::is_integral<T>::value, Query&>::type
@@ -80,6 +79,7 @@ operator<<(Query& query, const T&)
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);
diff --git a/src/database/select_query.hpp b/src/database/select_query.hpp
index 5a17f38..cd9943c 100644
--- a/src/database/select_query.hpp
+++ b/src/database/select_query.hpp
@@ -29,16 +29,15 @@ extract_row_value(Statement& statement, const int i)
}
template <typename T>
-typename std::enable_if<std::is_same<OptionalBool, T>::value, T>::type
+typename std::enable_if<std::is_same<std::optional<bool>, T>::value, T>::type
extract_row_value(Statement& statement, const int i)
{
const auto integer = statement.get_column_int(i);
- OptionalBool result;
if (integer > 0)
- result.set_value(true);
+ return true;
else if (integer < 0)
- result.set_value(false);
- return result;
+ return false;
+ return std::nullopt;
}
template <std::size_t N=0, typename... T>