From 7fca0e87bbc8d8d23b6a245140fde2acbb6595b7 Mon Sep 17 00:00:00 2001 From: wulan17 Date: Fri, 27 Oct 2023 12:39:58 +0700 Subject: [PATCH] Pyrofork: Clean usernames database before updating usernames database Signed-off-by: wulan17 --- pyrogram/storage/mongo_storage.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/pyrogram/storage/mongo_storage.py b/pyrogram/storage/mongo_storage.py index 2ffe3f96..2dc563da 100644 --- a/pyrogram/storage/mongo_storage.py +++ b/pyrogram/storage/mongo_storage.py @@ -4,7 +4,7 @@ import time from typing import List, Tuple, Any from .dummy_client import DummyMongoClient -from pymongo import MongoClient, UpdateOne +from pymongo import MongoClient, UpdateOne, DeleteMany from pyrogram.storage.storage import Storage from pyrogram.storage.sqlite_storage import get_input_peer @@ -124,6 +124,11 @@ class MongoStorage(Storage): async def update_usernames(self, usernames: List[Tuple[int, str]]): s = int(time.time()) + bulk_delete = [ + DeleteMany( + {'peer_id': i[0]} + ) for i in usernames + ] bulk = [ UpdateOne( {'_id': i[1]}, @@ -136,6 +141,9 @@ class MongoStorage(Storage): ] if not bulk: return + await self._usernames.bulk_write( + bulk_delete + ) await self._usernames.bulk_write( bulk )