diff options
author | Florent Le Coz <louiz@louiz.org> | 2015-12-24 21:39:53 +0100 |
---|---|---|
committer | Florent Le Coz <louiz@louiz.org> | 2016-01-04 13:47:26 +0100 |
commit | 421c960df501b40e836a783400ab00dc60c3fdae (patch) | |
tree | fb3b7be54a97f71102142aaa1901284c51c1854a /src/database | |
parent | 9ac0d3a5766494c9c0c2074c4a21542eea195a29 (diff) | |
download | biboumi-421c960df501b40e836a783400ab00dc60c3fdae.tar.gz biboumi-421c960df501b40e836a783400ab00dc60c3fdae.tar.bz2 biboumi-421c960df501b40e836a783400ab00dc60c3fdae.tar.xz biboumi-421c960df501b40e836a783400ab00dc60c3fdae.zip |
Add a ChannelOptions table in the DB
And a way to retrieve its values, defaulting on the ServerOptions for unset
values.
Diffstat (limited to 'src/database')
-rw-r--r-- | src/database/database.cpp | 33 | ||||
-rw-r--r-- | src/database/database.hpp | 6 |
2 files changed, 39 insertions, 0 deletions
diff --git a/src/database/database.cpp b/src/database/database.cpp index fd18417..0c7f425 100644 --- a/src/database/database.cpp +++ b/src/database/database.cpp @@ -49,6 +49,39 @@ db::IrcServerOptions Database::get_irc_server_options(const std::string& owner, } } +db::IrcChannelOptions Database::get_irc_channel_options(const std::string& owner, + const std::string& server, + const std::string& channel) +{ + try { + auto options = litesql::select<db::IrcChannelOptions>(Database::get_db(), + db::IrcChannelOptions::Owner == owner && + db::IrcChannelOptions::Server == server && + db::IrcChannelOptions::Channel == channel).one(); + return options; + } catch (const litesql::NotFound& e) { + db::IrcChannelOptions options(Database::get_db()); + options.owner = owner; + options.server = server; + options.channel = channel; + return options; + } +} + +db::IrcChannelOptions Database::get_irc_channel_options_with_server_default(const std::string& owner, + const std::string& server, + const std::string& channel) +{ + auto coptions = Database::get_irc_channel_options(owner, server, channel); + auto soptions = Database::get_irc_server_options(owner, server); + if (coptions.encodingIn.value().empty()) + coptions.encodingIn = soptions.encodingIn; + if (coptions.encodingOut.value().empty()) + coptions.encodingOut = soptions.encodingOut; + + return coptions; +} + void Database::close() { Database::db.reset(nullptr); diff --git a/src/database/database.hpp b/src/database/database.hpp index d8dc735..fc957bd 100644 --- a/src/database/database.hpp +++ b/src/database/database.hpp @@ -29,6 +29,12 @@ public: */ static db::IrcServerOptions get_irc_server_options(const std::string& owner, const std::string& server); + static db::IrcChannelOptions get_irc_channel_options(const std::string& owner, + const std::string& server, + const std::string& channel); + static db::IrcChannelOptions get_irc_channel_options_with_server_default(const std::string& owner, + const std::string& server, + const std::string& channel); static void close(); |