From 028a1f22df37554a6c2fee3eccd0c023a9d22d03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tadeusz=20So=C5=9Bnierz?= Date: Thu, 11 Nov 2021 10:25:44 +0100 Subject: [PATCH] Simplify the user activity query This avoids an accidental subquery and makes it work consistently regardless of a DB engine in use (previously failing on postgres). --- mautrix_telegram/db/user_activity.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mautrix_telegram/db/user_activity.py b/mautrix_telegram/db/user_activity.py index e3f46d4a..ae89231e 100644 --- a/mautrix_telegram/db/user_activity.py +++ b/mautrix_telegram/db/user_activity.py @@ -16,7 +16,7 @@ # along with this program. If not, see . from typing import Optional, Iterable -from sqlalchemy import Column, Integer, BigInteger +from sqlalchemy import Column, Integer, BigInteger, func, select from sqlalchemy.ext.hybrid import hybrid_property from mautrix.util.db import Base @@ -76,7 +76,7 @@ def activity_days(self): def get_active_count(cls, min_activity_days: int, max_activity_days: Optional[int]) -> int: current_ms = time.time() * 1000 - query = cls.t.select().where(cls.activity_days > min_activity_days) + query = select([func.count(UserActivity.puppet_id)]).where(cls.activity_days > min_activity_days) if max_activity_days is not None: query = query.where((current_ms - cls.last_activity_ts) <= (max_activity_days * ONE_DAY_MS)) - return cls.db.execute(query.count()).scalar() + return cls.db.execute(query).scalar()