(Tasklist): Make tasklists global.

This commit is contained in:
2021-09-21 17:21:12 +03:00
parent 8127d7e8ff
commit d9c676b262
6 changed files with 19 additions and 15 deletions

View File

@@ -1,2 +1,2 @@
CONFIG_FILE = "config/bot.conf"
DATA_VERSION = 0
DATA_VERSION = 1

View File

@@ -129,7 +129,6 @@ class Tasklist:
Update the in-memory tasklist from data and regenerate the pages
"""
self.tasklist = data.tasklist.fetch_rows_where(
guildid=self.member.guild.id,
userid=self.member.id,
_extra=("AND last_updated_at > timezone('utc', NOW()) - INTERVAL '24h' "
"ORDER BY created_at ASC, taskid ASC")
@@ -331,7 +330,7 @@ class Tasklist:
if unrewarded:
# Select tasks to reward up to the limit of rewards
recent_rewards = data.tasklist_rewards.queries.count_recent_for(self.member.guild.id, self.member.id)
recent_rewards = data.tasklist_rewards.queries.count_recent_for(self.member.id)
max_to_reward = max((task_reward_limit - recent_rewards, 0))
reward_tasks = unrewarded[:max_to_reward]
@@ -354,7 +353,6 @@ class Tasklist:
# Track reward
data.tasklist_rewards.insert(
guildid=self.member.guild.id,
userid=self.member.id,
reward_count=rewarding_count
)
@@ -376,12 +374,12 @@ class Tasklist:
Add provided tasks to the task list
"""
insert = [
(self.member.guild.id, self.member.id, task)
(self.member.id, task)
for task in tasks
]
return data.tasklist.insert_many(
*insert,
insert_keys=('guildid', 'userid', 'content')
insert_keys=('userid', 'content')
)
def _delete_tasks(self, *indexes):
@@ -460,7 +458,6 @@ class Tasklist:
# Fetch accurate count of current tasks
count = data.tasklist.select_one_where(
select_columns=("COUNT(*)",),
guildid=self.member.guild.id,
userid=self.member.id
)[0]

View File

@@ -2,7 +2,7 @@ from data import RowTable, Table
tasklist = RowTable(
'tasklist',
('taskid', 'guildid', 'userid', 'content', 'complete', 'rewarded', 'created_at', 'last_updated_at'),
('taskid', 'userid', 'content', 'complete', 'rewarded', 'created_at', 'last_updated_at'),
'taskid'
)
@@ -25,13 +25,13 @@ tasklist_rewards = Table('tasklist_reward_history')
@tasklist_rewards.save_query
def count_recent_for(guildid, userid, interval='24h'):
def count_recent_for(userid, interval='24h'):
with tasklist_rewards.conn:
with tasklist_rewards.conn.cursor() as curs:
curs.execute(
"SELECT SUM(reward_count) FROM tasklist_reward_history "
"WHERE "
"guildid = {} AND userid = {}"
"AND reward_time > timezone('utc', NOW()) - INTERVAL '{}'".format(guildid, userid, interval)
"userid = {}"
"AND reward_time > timezone('utc', NOW()) - INTERVAL '{}'".format(userid, interval)
)
return curs.fetchone()[0] or 0