aboutsummaryrefslogtreecommitdiffstats
path: root/pydis_site/apps/api/models
diff options
context:
space:
mode:
authorGravatar Chris Lovering <[email protected]>2021-11-23 16:29:06 +0000
committerGravatar Chris Lovering <[email protected]>2021-11-23 16:29:06 +0000
commit5b1bb82165d188a571c8999f17ef52f3856c9518 (patch)
treefd5818998d1a82670448909bf8a83a806ad795b7 /pydis_site/apps/api/models
parentMerge pull request #627 from python-discord/don't-always-calc-activity-blocks (diff)
Alter message query to leverage index
Previously this query would convert each row to an array just to check if it matched or not. By changing EXCLUDE_CHANNELS to a tuple instead of a list, it doesn't get passed as an array, so we can do a simple NOT IN check. This will also allow us to add an index with this condition to speed it up further.
Diffstat (limited to 'pydis_site/apps/api/models')
-rw-r--r--pydis_site/apps/api/models/bot/metricity.py14
1 files changed, 7 insertions, 7 deletions
diff --git a/pydis_site/apps/api/models/bot/metricity.py b/pydis_site/apps/api/models/bot/metricity.py
index 33fb7ad7..901f191a 100644
--- a/pydis_site/apps/api/models/bot/metricity.py
+++ b/pydis_site/apps/api/models/bot/metricity.py
@@ -4,10 +4,10 @@ from django.db import connections
BLOCK_INTERVAL = 10 * 60 # 10 minute blocks
-EXCLUDE_CHANNELS = [
+EXCLUDE_CHANNELS = (
"267659945086812160", # Bot commands
"607247579608121354" # SeasonalBot commands
-]
+)
class NotFoundError(Exception):
@@ -46,12 +46,12 @@ class Metricity:
self.cursor.execute(
"""
SELECT
- COUNT(*)
+ COUNT(*)
FROM messages
WHERE
- author_id = '%s'
- AND NOT is_deleted
- AND NOT %s::varchar[] @> ARRAY[channel_id]
+ author_id = '%s'
+ AND NOT is_deleted
+ AND channel_id NOT IN %s
""",
[user_id, EXCLUDE_CHANNELS]
)
@@ -79,7 +79,7 @@ class Metricity:
WHERE
author_id='%s'
AND NOT is_deleted
- AND NOT %s::varchar[] @> ARRAY[channel_id]
+ AND channel_id NOT IN %s
GROUP BY interval
) block_query;
""",