diff options
author | louiz’ <louiz@louiz.org> | 2017-06-28 14:42:33 +0200 |
---|---|---|
committer | louiz’ <louiz@louiz.org> | 2017-06-28 14:42:33 +0200 |
commit | c5407cf8ce6add6f3534df41398235e93b605ab3 (patch) | |
tree | f62cccb758dde48270cc24257df36bd3f5f89cf8 /src/database/table.cpp | |
parent | 13a1ab1878fd6312aea485ded3f5bad59c36f17f (diff) | |
parent | b71ca15a0f9114db38eec23b49d1489a2ff1d0ca (diff) | |
download | biboumi-c5407cf8ce6add6f3534df41398235e93b605ab3.tar.gz biboumi-c5407cf8ce6add6f3534df41398235e93b605ab3.tar.bz2 biboumi-c5407cf8ce6add6f3534df41398235e93b605ab3.tar.xz biboumi-c5407cf8ce6add6f3534df41398235e93b605ab3.zip |
Merge branch 'master' into debian
Diffstat (limited to 'src/database/table.cpp')
-rw-r--r-- | src/database/table.cpp | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/database/table.cpp b/src/database/table.cpp new file mode 100644 index 0000000..5929f33 --- /dev/null +++ b/src/database/table.cpp @@ -0,0 +1,25 @@ +#include <database/table.hpp> + +std::set<std::string> get_all_columns_from_table(sqlite3* db, const std::string& table_name) +{ + std::set<std::string> result; + char* errmsg; + std::string query{"PRAGMA table_info("s + table_name + ")"}; + log_debug(query); + int res = sqlite3_exec(db, query.data(), [](void* param, int columns_nb, char** columns, char**) -> int { + constexpr int name_column = 1; + std::set<std::string>* result = static_cast<std::set<std::string>*>(param); + log_debug("Table has column ", columns[name_column]); + if (name_column < columns_nb) + result->insert(columns[name_column]); + return 0; + }, &result, &errmsg); + + if (res != SQLITE_OK) + { + log_error("Error executing ", query, ": ", errmsg); + sqlite3_free(errmsg); + } + + return result; +} |