diff options
author | Florent Le Coz <louiz@louiz.org> | 2015-09-18 21:49:54 +0200 |
---|---|---|
committer | Florent Le Coz <louiz@louiz.org> | 2015-09-18 22:09:26 +0200 |
commit | 88ae2599f6dbf655e8806c9b4619ec089425683b (patch) | |
tree | 850cb2048401efff1650a2ce29b41df8464c7092 /src/database/database.cpp | |
parent | 33fa1dcd5a87035de1d9b8df65e5c7551b4bbd1b (diff) | |
download | biboumi-88ae2599f6dbf655e8806c9b4619ec089425683b.tar.gz biboumi-88ae2599f6dbf655e8806c9b4619ec089425683b.tar.bz2 biboumi-88ae2599f6dbf655e8806c9b4619ec089425683b.tar.xz biboumi-88ae2599f6dbf655e8806c9b4619ec089425683b.zip |
Introduce an optional Database module
Uses litesql
Diffstat (limited to 'src/database/database.cpp')
-rw-r--r-- | src/database/database.cpp | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/src/database/database.cpp b/src/database/database.cpp new file mode 100644 index 0000000..e16465c --- /dev/null +++ b/src/database/database.cpp @@ -0,0 +1,54 @@ +#include <database/database.hpp> +#include <config/config.hpp> +#include <utils/xdg.hpp> +#include <logger/logger.hpp> +#include <string> + +using namespace std::string_literals; + +std::unique_ptr<db::BibouDB> Database::db; + +db::BibouDB& Database::get_db() +{ + if (!Database::db) + { + const std::string db_filename = Config::get("db_name", + xdg_data_path("biboumi.sqlite")); + // log_info("Opening database: " << db_filename); + std::cout << "Opening database: " << db_filename << std::endl; + Database::db = std::make_unique<db::BibouDB>("sqlite3", + "database="s + db_filename); + } + + if (Database::db->needsUpgrade()) + Database::db->upgrade(); + + return *Database::db.get(); +} + +void Database::set_verbose(const bool val) +{ + Database::get_db().verbose = val; +} + +db::IrcServerOptions Database::get_irc_server_options(const std::string& owner, + const std::string& server) +{ + try { + auto options = litesql::select<db::IrcServerOptions>(Database::get_db(), + db::IrcServerOptions::Owner == owner && + db::IrcServerOptions::Server == server).one(); + return options; + } catch (const litesql::NotFound& e) { + db::IrcServerOptions options(Database::get_db()); + options.owner = owner; + options.server = server; + // options.update(); + return options; + } +} + +void Database::close() +{ + Database::db.reset(nullptr); +} |