fix: correct task sort order per status

DONE: finished_time ASC, PENDING: start_time ASC, TODO: order ASC
This commit is contained in:
Yuyao Huang 2026-05-09 16:13:05 +08:00
parent 01ae9c964a
commit 43ca6b8462

View File

@ -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()]