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"))
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)
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)
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)
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