diff options
author | louiz’ <louiz@louiz.org> | 2017-07-28 18:03:16 +0200 |
---|---|---|
committer | louiz’ <louiz@louiz.org> | 2017-07-28 18:03:16 +0200 |
commit | 8c92473a6681aaf671b21780202dde731772cee8 (patch) | |
tree | 6ff2ae92dc06ff873c2d0e162f50cc649f3b8198 /src/database/table.hpp | |
parent | 76f5fa81f2026770c907bee0e931aae8d8c7a1bd (diff) | |
parent | 6187423e6ed834570783ef3097a6ef73cc58107a (diff) | |
download | biboumi-8c92473a6681aaf671b21780202dde731772cee8.tar.gz biboumi-8c92473a6681aaf671b21780202dde731772cee8.tar.bz2 biboumi-8c92473a6681aaf671b21780202dde731772cee8.tar.xz biboumi-8c92473a6681aaf671b21780202dde731772cee8.zip |
Merge branch 'master' into debian
Diffstat (limited to 'src/database/table.hpp')
-rw-r--r-- | src/database/table.hpp | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/src/database/table.hpp b/src/database/table.hpp index 411ac6a..0060211 100644 --- a/src/database/table.hpp +++ b/src/database/table.hpp @@ -2,7 +2,6 @@ #include <database/select_query.hpp> #include <database/type_to_sql.hpp> -#include <logger/logger.hpp> #include <database/row.hpp> #include <algorithm> @@ -17,8 +16,7 @@ template <typename ColumnType> void add_column_to_table(sqlite3* db, const std::string& table_name) { const std::string name = ColumnType::name; - std::string query{"ALTER TABLE "s + table_name + " ADD " + ColumnType::name + " " + TypeToSQLType<typename ColumnType::real_type>::type}; - log_debug(query); + std::string query{"ALTER TABLE " + table_name + " ADD " + ColumnType::name + " " + TypeToSQLType<typename ColumnType::real_type>::type}; char* error; const auto result = sqlite3_exec(db, query.data(), nullptr, nullptr, &error); if (result != SQLITE_OK) @@ -28,6 +26,17 @@ void add_column_to_table(sqlite3* db, const std::string& table_name) } } + +template <typename ColumnType, decltype(ColumnType::options) = nullptr> +void append_option(std::string& s) +{ + s += " "s + ColumnType::options; +} + +template <typename, typename... Args> +void append_option(Args&& ...) +{ } + template <typename... T> class Table { @@ -55,11 +64,8 @@ class Table this->add_column_create(res); res += ")"; - log_debug(res); - char* error; const auto result = sqlite3_exec(db, res.data(), nullptr, nullptr, &error); - log_debug("result: ", +result); if (result != SQLITE_OK) { log_error("Error executing query: ", error); @@ -110,14 +116,13 @@ class Table str += ColumnType::name; str += " "; str += TypeToSQLType<RealType>::type; - str += " "s + ColumnType::options; + append_option<ColumnType>(str); if (N != sizeof...(T) - 1) str += ","; str += "\n"; add_column_create<N+1>(str); } - template <std::size_t N=0> typename std::enable_if<N == sizeof...(T), void>::type add_column_create(std::string&) |