From a0e041ec1e9fd32b214e7a14e491aca14f7bf5f1 Mon Sep 17 00:00:00 2001 From: Ronan Abhamon Date: Wed, 25 Oct 2017 11:46:23 +0200 Subject: [PATCH] feat(MainDb): basix fetch of chatrooms --- src/core/core.h | 3 ++- src/db/main-db.cpp | 54 +++++++++++++++++++++++++++------------------- src/db/main-db.h | 1 - 3 files changed, 34 insertions(+), 24 deletions(-) diff --git a/src/core/core.h b/src/core/core.h index d0eb6ac4b..4e4cf5d04 100644 --- a/src/core/core.h +++ b/src/core/core.h @@ -41,9 +41,10 @@ public: std::string getDataPath() const; std::string getConfigPath() const; + const std::list> &getChatRooms () const; + std::shared_ptr createClientGroupChatRoom (const std::string &subject); std::shared_ptr getOrCreateChatRoom (const std::string &peerAddress, bool isRtt = false) const; - const std::list> &getChatRooms () const; private: L_DECLARE_PRIVATE(Core); diff --git a/src/db/main-db.cpp b/src/db/main-db.cpp index 0dab63c1b..6888d5487 100644 --- a/src/db/main-db.cpp +++ b/src/db/main-db.cpp @@ -1004,37 +1004,51 @@ MainDb::MainDb () : AbstractDb(*new MainDbPrivate) {} // ----------------------------------------------------------------------------- list> MainDb::getChatRooms () const { - list> chatRooms; - // TODO. - return chatRooms; -} + static const string query = "SELECT value, creation_date, last_update_date, capabilities, subject, last_notify_id" + " FROM chat_room, sip_address" + " WHERE peer_sip_address_id = id"; -shared_ptr MainDb::findChatRoom (const string &peerAddress) const { L_D(); - // TODO: Use core cache. + list> chatRooms; L_BEGIN_LOG_EXCEPTION soci::session *session = d->dbSession.getBackendSession(); - tm creationDate; - tm lastUpdateDate; - int capabilities; - string subject; + soci::rowset rows = (session->prepare << query); + for (const auto &row : rows) { + string sipAddress = row.get(0); + tm creationDate = row.get(1); + tm lastUpdateDate = row.get(2); + int capabilities = row.get(3); + string subject = row.get(4); + unsigned int lastNotifyId = row.get(5); - *session << "SELECT creation_date, last_update_date, capabilities, subject " - " FROM chat_room" - " WHERE peer_sip_address_id = (" - " SELECT id from sip_address WHERE value = :peerAddress" - " )", soci::use(peerAddress), soci::into(creationDate), soci::into(lastUpdateDate), - soci::use(capabilities), soci::use(subject); + (void)sipAddress; + (void)creationDate; + (void)lastUpdateDate; + (void)capabilities; + (void)subject; + (void)lastNotifyId; - // TODO. + if (capabilities & static_cast(ChatRoom::Capabilities::Basic)) { + if (capabilities & static_cast(ChatRoom::Capabilities::RealTimeText)) { + // TODO. + continue; + } + // TODO. + continue; + } + + if (capabilities & static_cast(ChatRoom::Capabilities::Conference)) { + // TODO. + } + } L_END_LOG_EXCEPTION - return shared_ptr(); + return chatRooms; } // ----------------------------------------------------------------------------- @@ -1228,10 +1242,6 @@ shared_ptr MainDb::findChatRoom (const string &peerAddress) const { void MainDb::cleanHistory (const string &, FilterMask) {} - shared_ptr MainDb::findChatRoom (const string &) const { - return nullptr; - } - bool MainDb::import (Backend, const string &) { return false; } diff --git a/src/db/main-db.h b/src/db/main-db.h index 7a0367a62..86edc9ca1 100644 --- a/src/db/main-db.h +++ b/src/db/main-db.h @@ -71,7 +71,6 @@ public: // ChatRooms. std::list> getChatRooms () const; - std::shared_ptr findChatRoom (const std::string &peerAddress) const; // Import legacy messages from old db. bool import (Backend backend, const std::string ¶meters) override;