From f363a86f873e33fd7fc419dd5f6fc5b74e4d3a7a Mon Sep 17 00:00:00 2001 From: timotheyca Date: Tue, 11 Aug 2020 01:56:45 +0300 Subject: [PATCH] edit optimizations --- v25/messaging/message.py | 5 ++++- v25/storage/dbstorage.py | 6 ++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/v25/messaging/message.py b/v25/messaging/message.py index e06a0aa..52134ba 100644 --- a/v25/messaging/message.py +++ b/v25/messaging/message.py @@ -97,11 +97,14 @@ class Message: Encoding.nonce(), pcontent, None, Flags(self.flags.replace('', '')).enq()).sealed() + def edit_(self): + return self.flags_(self.flags) + def edited(self, other: 'Message'): return self.pair == other.pair and self.idnonce == other.idnonce def editt(self, content: bytes) -> Tuple['Message', 'Message']: - return self, self.edit(content) + return self.flags_(self.flags), self.edit(content) def delete(self): return Message(self.sfrom, self.sto, self.idnonce, None, diff --git a/v25/storage/dbstorage.py b/v25/storage/dbstorage.py index b9e1df1..77a2e21 100644 --- a/v25/storage/dbstorage.py +++ b/v25/storage/dbstorage.py @@ -151,6 +151,12 @@ class DBStorage(AbstractStorage): Message(pair[0], pair[1], Encoding.decode(params['before']), None, None, None, None, '')).oid) + if params.get('after'): + query = query.filter(Msg.oid > self.one_alike( + session, + Message(pair[0], pair[1], Encoding.decode(params['before']), None, + None, None, None, + '')).oid) for flag in params.get('flags', ()): query = query.filter(Msg.flags.contains(flag)) query = query.order_by(Msg.oid.desc())