(stats cmd): Fixed rank display.

Added `member_ranks` data view for getting time and coin ranks from db.
This commit is contained in:
2021-09-13 09:28:12 +03:00
parent 912409ec3e
commit 73d210db31
3 changed files with 11 additions and 6 deletions

View File

@@ -79,3 +79,5 @@ lions = RowTable(
cache=TTLCache(5000, ttl=60*5),
attach_as='lions'
)
lion_ranks = Table('member_ranks', attach_as='lion_ranks')

View File

@@ -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

View File

@@ -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