LCOV - code coverage report
Current view: top level - Servidor - ChatDatabaseManager.cpp (source / functions) Hit Total Coverage
Test: coverage_merged.info Lines: 59 60 98.3 %
Date: 2016-07-11 17:43:33 Functions: 12 12 100.0 %

          Line data    Source code
       1             : #include "ChatDatabaseManager.h"
       2             : #include "api_server_constants.h"
       3             : 
       4             : using std::string;
       5             : 
       6         181 : ChatDatabaseManager::ChatDatabaseManager(rocksdb::DB *database) : DatabaseManager(database) {
       7             : 
       8         181 : }
       9             : 
      10          15 : std::string ChatDatabaseManager::getConversationKey(std::string sender, std::string receiver){
      11          15 :         string key;
      12          15 :     if (sender.compare(receiver) < 0) {
      13           3 :                 key = receiver + DB_SEPARATOR + sender;
      14             :         } else {
      15          12 :                 key = sender + DB_SEPARATOR + receiver;
      16             :         }
      17          15 :     return key;
      18             : }
      19             : 
      20          10 : std::string ChatDatabaseManager::getNewMessagesKey(std::string sender, std::string receiver){
      21          10 :         return NEW_MSGS_PREFIX + sender + DB_SEPARATOR + receiver;
      22           6 : }
      23           6 : 
      24           4 : void ChatDatabaseManager::saveNewMsgs(std::string messageWithSender, std::string sender, std::string receiver){
      25          10 :         string currentNewMessages;
      26             : 
      27           9 :         string newMessageskey = getNewMessagesKey(sender, receiver);
      28           6 :         if (!getEntry(newMessageskey, currentNewMessages)) {
      29           9 :                 DatabaseManager::addEntry(newMessageskey, messageWithSender + "\n");
      30           7 :                 return;
      31           4 :         }
      32           2 :         replaceEntry(newMessageskey, currentNewMessages + messageWithSender + "\n");
      33             : 
      34           4 : }
      35           4 : 
      36           6 : void ChatDatabaseManager::saveMessage(std::string message, std::string sender, std::string receiver){
      37           8 :         LOGG(INFO) << "Saving message " << message <<" from " << sender << " to " << receiver;
      38           6 :     string conversationHistory;
      39           3 :     string key;
      40           6 :     key = getConversationKey(sender, receiver);
      41             : 
      42           9 :     string messageWithSender = sender + DB_SEPARATOR + message;
      43             : 
      44           4 :     //Saving new message in both users conversations.
      45           4 :     saveNewMsgs(messageWithSender,sender,receiver);
      46           8 :     saveNewMsgs(messageWithSender,receiver,sender);
      47             : 
      48           2 :     if (! getEntry(key, conversationHistory)) {
      49           5 :         DatabaseManager::addEntry(key, messageWithSender + "\n");
      50           3 :         return;
      51             :     }
      52             : 
      53           4 :     replaceEntry(key, conversationHistory + messageWithSender + "\n");
      54           2 : 
      55           4 : }
      56             : 
      57           3 : bool ChatDatabaseManager::getHistory(std::string sender, std::string receiver, std::string& chat_history){
      58           1 :     string conversationHistory;
      59           4 :     string key;
      60           0 : 
      61           1 :     key = getConversationKey(sender, receiver);
      62             : 
      63           3 :     if (! getEntry(key, conversationHistory) ) {
      64           4 :             return false;
      65             :     }
      66             : 
      67           3 :     chat_history = conversationHistory;
      68           4 :     return true;
      69           4 : }
      70           4 : 
      71           2 : void ChatDatabaseManager::getNewMsgs(string sender, string receiver, string &newMsgs){
      72           4 :         string newMessages;
      73           4 :         string newMessageskey = getNewMessagesKey(sender, receiver);
      74           2 : 
      75           2 :         if (getEntry(newMessageskey,newMessages)){
      76           1 :                 LOGG(INFO) << "Found new messages from " << sender << " and " << receiver;
      77           1 :                 LOGG(INFO) << "Messages found " << newMessages;
      78           1 :                 this->deleteEntry(newMessageskey);
      79           4 :         } else {
      80           9 :                 newMessages = "";
      81             :         }
      82             : 
      83           4 :         newMsgs = newMessages;
      84          11 : }

Generated by: LCOV version 1.12-4-g04a3c0e