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/engine.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/engine.hpp')
-rw-r--r-- | src/database/engine.hpp | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/src/database/engine.hpp b/src/database/engine.hpp index 41dccf5..ecf047f 100644 --- a/src/database/engine.hpp +++ b/src/database/engine.hpp @@ -13,6 +13,7 @@ #include <string> #include <vector> #include <tuple> +#include <map> #include <set> class DatabaseEngine @@ -27,7 +28,10 @@ class DatabaseEngine DatabaseEngine(DatabaseEngine&&) = delete; DatabaseEngine& operator=(DatabaseEngine&&) = delete; - virtual std::set<std::string> get_all_columns_from_table(const std::string& table_name) = 0; + enum class EngineType { None, Postgresql, Sqlite3, }; + virtual EngineType engine_type() const = 0; + + virtual std::map<std::string, std::string> get_all_columns_from_table(const std::string& table_name) = 0; virtual std::tuple<bool, std::string> raw_exec(const std::string& query) = 0; virtual std::unique_ptr<Statement> prepare(const std::string& query) = 0; virtual void extract_last_insert_rowid(Statement& statement) = 0; @@ -35,7 +39,17 @@ class DatabaseEngine { return {}; } - virtual std::string id_column_type() = 0; + virtual void convert_date_format(DatabaseEngine&) = 0; + virtual std::string id_column_type() const = 0; + virtual std::string datetime_column_type() const = 0; + virtual long double epoch_to_floating_value(long double seconds) const = 0; + virtual std::string escape_param_number(int nb) const + { + return "$" + std::to_string(nb); + } + virtual void init_session() + { + } int64_t last_inserted_rowid{-1}; }; |