Only load users with a tgid at startup

This commit is contained in:
Tulir Asokan
2019-08-06 00:59:11 +03:00
parent d6ebce0425
commit 2a9ab569b4
3 changed files with 6 additions and 4 deletions
+2 -1
View File
@@ -222,8 +222,9 @@ class AbstractUser(ABC):
async def ensure_started(self, even_if_no_session=False) -> 'AbstractUser': async def ensure_started(self, even_if_no_session=False) -> 'AbstractUser':
if not self.puppet_whitelisted or self.connected: if not self.puppet_whitelisted or self.connected:
return self return self
self.log.debug("ensure_started(%s, even_if_no_session=%s)", self.mxid, even_if_no_session)
if even_if_no_session or self.session_container.has_session(self.mxid): if even_if_no_session or self.session_container.has_session(self.mxid):
self.log.debug("Starting client due to ensure_started"
f"(even_if_no_session={even_if_no_session})")
await self.start(delete_unless_authenticated=not even_if_no_session) await self.start(delete_unless_authenticated=not even_if_no_session)
return self return self
+2 -2
View File
@@ -41,8 +41,8 @@ class User(Base):
saved_contacts=saved_contacts) saved_contacts=saved_contacts)
@classmethod @classmethod
def all(cls) -> Iterable['User']: def all_with_tgid(cls) -> Iterable['User']:
return cls._select_all() return cls._select_all(cls.c.tgid != None)
@classmethod @classmethod
def get_by_tgid(cls, tgid: TelegramID) -> Optional['User']: def get_by_tgid(cls, tgid: TelegramID) -> Optional['User']:
+2 -1
View File
@@ -414,4 +414,5 @@ def init(context: 'Context') -> Iterable[Awaitable['User']]:
global config global config
config = context.config config = context.config
return (User.from_db(db_user).ensure_started() for db_user in DBUser.all() if db_user.tgid) return (User.from_db(db_user).ensure_started()
for db_user in DBUser.all_with_tgid())