From d084cca983fb7cd51a14eb44420a48de5a3dbc42 Mon Sep 17 00:00:00 2001 From: Lonami Date: Mon, 16 May 2022 18:09:39 +0200 Subject: [PATCH] Add get_update_states to telethon_session (#795) This is needed for an upcoming patch in order to properly catch up on all channels the client is in. --- mautrix_telegram/db/telethon_session.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/mautrix_telegram/db/telethon_session.py b/mautrix_telegram/db/telethon_session.py index 5646c016..a3d139f9 100644 --- a/mautrix_telegram/db/telethon_session.py +++ b/mautrix_telegram/db/telethon_session.py @@ -136,6 +136,26 @@ class PgSession(MemorySession): q, self.session_id, entity_id, row.pts, row.qts, ts, row.seq, row.unread_count ) + async def get_update_states(self) -> tuple[tuple[int, updates.State], ...]: + q = ( + "SELECT entity_id, pts, qts, date, seq, unread_count FROM telethon_update_state " + "WHERE session_id=$1" + ) + rows = await self.db.fetch(q, self.session_id) + return ( + ( + row["entity_id"], + updates.State( + row["pts"], + row["qts"], + datetime.datetime.utcfromtimestamp(row["date"]), + row["seq"], + row["unread_count"], + ), + ) + for row in rows + ) + def _entity_values_to_row( self, id: int, hash: int, username: str | None, phone: str | int | None, name: str | None ) -> tuple[str, int, int, str | None, str | None, str | None]: