summaryrefslogtreecommitdiff
path: root/src/database/table.hpp
diff options
context:
space:
mode:
authorlouiz’ <louiz@louiz.org>2017-07-28 18:03:16 +0200
committerlouiz’ <louiz@louiz.org>2017-07-28 18:03:16 +0200
commit8c92473a6681aaf671b21780202dde731772cee8 (patch)
tree6ff2ae92dc06ff873c2d0e162f50cc649f3b8198 /src/database/table.hpp
parent76f5fa81f2026770c907bee0e931aae8d8c7a1bd (diff)
parent6187423e6ed834570783ef3097a6ef73cc58107a (diff)
downloadbiboumi-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.hpp21
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&)