feat: Migration v0 to v1.
Move 'tasklist' table to 'taskslist' for compatibility. Add migration sql script. Add 'taskslist_info' view. Add 'completed_in' to tasks.
This commit is contained in:
@@ -1,8 +1,9 @@
|
||||
BEGIN;
|
||||
-- Tasklist data {{{
|
||||
|
||||
INSERT INTO version_history (component, from_version, to_version, author) VALUES ('TASKLIST', 0, 1, 'Initial Creation');
|
||||
|
||||
CREATE TABLE tasklist(
|
||||
CREATE TABLE taskslist(
|
||||
taskid INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
|
||||
profileid INTEGER NOT NULL REFERENCES user_profiles(profileid) ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
content TEXT NOT NULL,
|
||||
@@ -11,6 +12,7 @@ CREATE TABLE tasklist(
|
||||
duration INTEGER NOT NULL DEFAULT 0,
|
||||
started_at TIMESTAMPTZ,
|
||||
completed_at TIMESTAMPTZ,
|
||||
completed_in INTEGER NOT NULL REFERENCES communities(communityid) ON DELETE SET NULL,
|
||||
_timestamp TIMESTAMPTZ DEFAILT NOW()
|
||||
);
|
||||
CREATE TRIGGER tasklist_timestamp BEFORE UPDATE ON tasklist
|
||||
@@ -18,18 +20,49 @@ CREATE TRIGGER tasklist_timestamp BEFORE UPDATE ON tasklist
|
||||
|
||||
|
||||
CREATE TABLE nowlist(
|
||||
taskid INTEGER PRIMARY KEY REFERENCES tasklist(taskid) ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
taskid INTEGER PRIMARY KEY REFERENCES taskslist(taskid) ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
last_started TIMESTAMPTZ NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE taskplan(
|
||||
taskid INTEGER PRIMARY KEY REFERENCES tasklist(taskid) ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
taskid INTEGER PRIMARY KEY REFERENCES taskslist(taskid) ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
order_idx INTEGER NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE task_profiles(
|
||||
profileid INTEGER PRIMARY KEY REFERENCES user_profiles(profileid) ON DELETE CASCADE ON UPDATE CASCADE
|
||||
profileid INTEGER PRIMARY KEY REFERENCES user_profiles(profileid) ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
show_tips BOOLEAN,
|
||||
show_encouragement BOOLEAN
|
||||
);
|
||||
|
||||
CREATE VIEW
|
||||
taskslist_info,
|
||||
AS
|
||||
SELECT
|
||||
taskslist.taskid AS taskid,
|
||||
taskslist.profileid AS profileid,
|
||||
taskslist.content AS content,
|
||||
taskslist.created_at AS created_at,
|
||||
taskslist.duration AS duration,
|
||||
taskslist.started_at AS started_at,
|
||||
taskslist.completed_at AS completed_at,
|
||||
taskslist.completed_in AS completed_in,
|
||||
nowlist.last_started AS last_started,
|
||||
taskplan.order_idx AS order_idx,
|
||||
task_profiles.show_tips AS show_tips,
|
||||
task_profiles.show_encouragement AS show_encouragement,
|
||||
(taskslist.completed_at IS NOT NULL) AS is_complete,
|
||||
(nowlist.taskid IS NOT NULL) AS is_running,
|
||||
(taskplan.order_idx IS NOT NULL) AS is_planned,
|
||||
(row_number() OVER (PARITION BY profileid ORDER BY taskid ASC)) AS tasklabel
|
||||
FROM
|
||||
taskslist
|
||||
LEFT JOIN nowlist USING (taskid)
|
||||
LEFT JOIN taskplan USING (taskid)
|
||||
LEFT JOIN task_profiles USING (profileid)
|
||||
WHERE deleted_at IS NULL
|
||||
ORDER BY (profileid, taskid);
|
||||
|
||||
|
||||
-- }}}
|
||||
COMMIT;
|
||||
|
||||
Reference in New Issue
Block a user