diff options
author | louiz’ <louiz@louiz.org> | 2018-04-10 23:33:59 +0200 |
---|---|---|
committer | louiz’ <louiz@louiz.org> | 2018-04-11 00:25:18 +0200 |
commit | 857c7d3972a03cbeebf730d99b924d3710dee6a0 (patch) | |
tree | 5bf1ed66ba7ddda3f16a470115cf364a8c7a10cb /src/database/query.hpp | |
parent | 0cd848e532c8c60ed4f3a5d1e6a3850929f2765b (diff) | |
download | biboumi-857c7d3972a03cbeebf730d99b924d3710dee6a0.tar.gz biboumi-857c7d3972a03cbeebf730d99b924d3710dee6a0.tar.bz2 biboumi-857c7d3972a03cbeebf730d99b924d3710dee6a0.tar.xz biboumi-857c7d3972a03cbeebf730d99b924d3710dee6a0.zip |
Use a different Date data type
PLEASE backup your database before testing this commit, and report any
migration issue.
In postgresql, we use timestamp with timezone.
In sqlite3 we use REAL (the date is expressed as julianday)
This requires a migration of the muclogline_ table:
In postgresql it’s pretty simple, we convert all the integer into timestamps
With sqlite3, we actually rename the table, create the new one with the
correct type, then copy everything to the new table, with a conversion
function for the Date_ column, and then we delete the old table.
fix #3343
Diffstat (limited to 'src/database/query.hpp')
-rw-r--r-- | src/database/query.hpp | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/database/query.hpp b/src/database/query.hpp index ba28b1a..910271a 100644 --- a/src/database/query.hpp +++ b/src/database/query.hpp @@ -3,6 +3,7 @@ #include <biboumi.h> #include <utils/optional_bool.hpp> +#include <utils/datetime.hpp> #include <database/statement.hpp> #include <database/column.hpp> @@ -10,6 +11,7 @@ #include <vector> #include <string> +#include <database/datetime_writer.hpp> void actual_bind(Statement& statement, const std::string& value, int index); void actual_bind(Statement& statement, const std::int64_t& value, int index); @@ -19,6 +21,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 DateTime& value, int index); #ifdef DEBUG_SQL_QUERIES #include <utils/scopetimer.hpp> @@ -74,15 +77,13 @@ 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 +typename std::enable_if<!std::is_arithmetic<T>::value, Query&>::type operator<<(Query& query, const T&) { query.body += T::name; return query; } -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) @@ -92,3 +93,6 @@ operator<<(Query& query, const Integer& i) return query; } +Query& operator<<(Query& query, const char* str); +Query& operator<<(Query& query, const std::string& str); +Query& operator<<(Query& query, const DatetimeWriter& datetime); |