예제 #1
0
 def messages(self) -> Iterator[Message]:
     """
     Returns all messages
     :return: Iterator of Message
     :rtype: Iterator[Message]
     """
     return map(lambda row: Message(row), self.get_all_rows("messages"))
예제 #2
0
 def last_messages(self) -> Iterator[Message]:
     """
     Returns the last message of all conversations
     :return: Iterator of Message
     :rtype: Iterator[Message]
     """
     for row in self.query(
             "select * from messages where _id in (SELECT last_message_row_id FROM chat)"
     ):
         yield Message(row)
예제 #3
0
    def contact_messages(self, jid: str) -> Iterator[Message]:
        """
        Returns all messages from the respective contact
        :param jid: JID id of user
        :type jid: str
        :return: Iterator of Message
        :rtype: Iterator[Message]
        """

        for sub_row in self.query(
                f"SELECT * from messages where key_remote_jid = '{jid}'"):
            return Message(sub_row)
예제 #4
0
 def last_contact_message(self, jid: str) -> Message:
     """
     Get last message from a respective contact
     :param jid: JID id of user
     :type jid: str
     :return: Message
     :rtype: Message
     """
     for row in self.query(
             f"select * from messages where _id in (SELECT last_message_row_id FROM chat where jid_row_id in (SELECT _id from jid where raw_string = '{jid}'))"
     ):
         return Message(row)
예제 #5
0
    def chat_last_message_has_sent(self, jid: str) -> bool:
        has_sent = False

        for row in self.query(
                f"select * from messages where _id in (SELECT last_message_row_id FROM chat where jid_row_id in (SELECT _id from jid where raw_string = '{jid}'))"
        ):
            message = Message(row)

            if message is not None:
                has_sent = _MESSAGE_IS_SENT_(message.status)
            break

        return has_sent