From 73d210db31ccc9324fffcbbe386b2ae7af68a806 Mon Sep 17 00:00:00 2001 From: Conatum Date: Mon, 13 Sep 2021 09:28:12 +0300 Subject: [PATCH] (stats cmd): Fixed rank display. Added `member_ranks` data view for getting time and coin ranks from db. --- bot/core/data.py | 2 ++ bot/modules/study/stats_cmd.py | 8 ++------ data/schema.sql | 7 +++++++ 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/bot/core/data.py b/bot/core/data.py index 06f240e3..1c4b0833 100644 --- a/bot/core/data.py +++ b/bot/core/data.py @@ -79,3 +79,5 @@ lions = RowTable( cache=TTLCache(5000, ttl=60*5), attach_as='lions' ) + +lion_ranks = Table('member_ranks', attach_as='lion_ranks') diff --git a/bot/modules/study/stats_cmd.py b/bot/modules/study/stats_cmd.py index bebeb024..b7abc152 100644 --- a/bot/modules/study/stats_cmd.py +++ b/bot/modules/study/stats_cmd.py @@ -31,13 +31,9 @@ async def cmd_stats(ctx): # Collect the required target data lion = Lion.fetch(ctx.guild.id, target.id) - rank_data = tables.lions.select_one_where( + rank_data = tables.lion_ranks.select_one_where( userid=target.id, - guildid=ctx.guild.id, - select_columns=( - "row_number() OVER (PARTITION BY guildid ORDER BY tracked_time DESC, userid ASC) AS time_rank", - "row_number() OVER (PARTITION BY guildid ORDER BY coins DESC, userid ASC) AS coin_rank", - ) + guildid=ctx.guild.id ) # Extract and format data diff --git a/data/schema.sql b/data/schema.sql index dfba71f0..54658631 100644 --- a/data/schema.sql +++ b/data/schema.sql @@ -207,6 +207,13 @@ CREATE TRIGGER update_members_timstamp BEFORE UPDATE ON members FOR EACH ROW EXECUTE PROCEDURE update_timestamp_column(); +CREATE VIEW member_ranks AS + SELECT + *, + row_number() OVER (PARTITION BY guildid ORDER BY tracked_time DESC, userid ASC) AS time_rank, + row_number() OVER (PARTITION BY guildid ORDER BY coins DESC, userid ASC) AS coin_rank + FROM members; + CREATE VIEW current_study_badges AS SELECT