From 43ca6b8462dd0955052145bc13dabfb784c51576 Mon Sep 17 00:00:00 2001 From: Yuyao Huang Date: Sat, 9 May 2026 16:13:05 +0800 Subject: [PATCH] fix: correct task sort order per status DONE: finished_time ASC, PENDING: start_time ASC, TODO: order ASC --- database.py | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/database.py b/database.py index d84a33f..5498c96 100644 --- a/database.py +++ b/database.py @@ -202,19 +202,25 @@ def get_tasks_sorted(goal_id): try: cur = conn.execute( """SELECT * FROM tasks WHERE goal_id = ? AND status = 'done' - ORDER BY finished_time DESC""", + ORDER BY finished_time ASC""", (goal_id,) ) finished = [row_to_dict(r) for r in cur.fetchall()] cur = conn.execute( """SELECT * FROM tasks WHERE goal_id = ? AND status != 'done' - ORDER BY CASE status - WHEN 'doing' THEN 1 - WHEN 'pending' THEN 2 - WHEN 'todo' THEN 3 - ELSE 4 - END, "order" ASC""", + ORDER BY + CASE status + WHEN 'doing' THEN 0 + WHEN 'pending' THEN 1 + WHEN 'todo' THEN 2 + END ASC, + CASE status + WHEN 'pending' THEN start_time + END ASC, + CASE status + WHEN 'todo' THEN "order" + END ASC""", (goal_id,) ) unfinished = [row_to_dict(r) for r in cur.fetchall()]