diff --git a/data/schema.sql b/data/schema.sql index ec02d2b7..4be3422d 100644 --- a/data/schema.sql +++ b/data/schema.sql @@ -318,6 +318,20 @@ CREATE TABLE tasklist_reward_history( reward_count INTEGER ); CREATE INDEX tasklist_reward_history_users ON tasklist_reward_history (userid, reward_time); + +CREATE TABLE tasklist_current( + taskid INTEGER PRIMARY KEY REFERENCES tasklist (taskid) ON DELETE CASCADE ON UPDATE CASCADE, + started_at TIMESTAMPTZ NOT NULL +); + +CREATE TABLE tasklist_planner( + taskid INTEGER PRIMARY KEY REFERENCES tasklist (taskid) ON DELETE CASCADE ON UPDATE CASCADE, + sortkey INTEGER +); + + + + -- }}} -- Reminder data {{{ diff --git a/src/gui b/src/gui index 40bc1403..62d24849 160000 --- a/src/gui +++ b/src/gui @@ -1 +1 @@ -Subproject commit 40bc14035593ee18d351b86e958d1882035b01ef +Subproject commit 62d2484914022bf3a98ca18bdd46d072f570d0a0 diff --git a/src/modules/tasklist/cog.py b/src/modules/tasklist/cog.py index 6d79b485..470b131e 100644 --- a/src/modules/tasklist/cog.py +++ b/src/modules/tasklist/cog.py @@ -7,6 +7,7 @@ from discord.ext import commands as cmds from discord import app_commands as appcmds from discord.app_commands.transformers import AppCommandOptionType as cmdopt +from data.queries import JOINTYPE from meta import LionBot, LionCog, LionContext from meta.logger import log_wrap from meta.errors import UserInputError diff --git a/src/modules/tasklist/data.py b/src/modules/tasklist/data.py index dd2cf8b6..8c0d5cac 100644 --- a/src/modules/tasklist/data.py +++ b/src/modules/tasklist/data.py @@ -5,6 +5,7 @@ from data.columns import Integer, String, Timestamp, Bool class TasklistData(Registry): + class Task(RowModel): """ Row model describing a single task in a tasklist. @@ -25,12 +26,6 @@ class TasklistData(Registry): last_updated_at TIMESTAMPTZ ); CREATE INDEX tasklist_users ON tasklist (userid); - - CREATE TABLE tasklist_channels( - guildid BIGINT NOT NULL REFERENCES guild_config (guildid) ON DELETE CASCADE, - channelid BIGINT NOT NULL - ); - CREATE INDEX tasklist_channels_guilds ON tasklist_channels (guildid); """ _tablename_ = "tasklist" @@ -45,4 +40,24 @@ class TasklistData(Registry): last_updated_at = Timestamp() duration = Integer() + """ + Schema + ------ + + CREATE TABLE tasklist_channels( + guildid BIGINT NOT NULL REFERENCES guild_config (guildid) ON DELETE CASCADE, + channelid BIGINT NOT NULL + ); + CREATE INDEX tasklist_channels_guilds ON tasklist_channels (guildid); + """ channels = Table('tasklist_channels') + + """ + Schema + ------ + CREATE TABLE current_tasks( + taskid PRIMARY KEY REFERENCES tasklist (taskid) ON DELETE CASCADE ON UPDATE CASCADE, + last_started_at TIMESTAMPTZ NOT NULL + ); + """ + current_tasks = Table('current_tasks') diff --git a/src/modules/tasklist/migration.sql b/src/modules/tasklist/migration.sql index 14a606ac..0e4b8ebd 100644 --- a/src/modules/tasklist/migration.sql +++ b/src/modules/tasklist/migration.sql @@ -10,3 +10,14 @@ ALTER TABLE tasklist NOT VALID; ALTER TABLE tasklist ADD COLUMN duration INTEGER; + + +CREATE TABLE tasklist_current( + taskid INTEGER PRIMARY KEY REFERENCES tasklist (taskid) ON DELETE CASCADE ON UPDATE CASCADE, + started_at TIMESTAMPTZ NOT NULL +); + +CREATE TABLE tasklist_planner( + taskid INTEGER PRIMARY KEY REFERENCES tasklist (taskid) ON DELETE CASCADE ON UPDATE CASCADE, + sortkey INTEGER +);