4.8.9: Сортировка задач по completed и next_show_at
All checks were successful
Build and Push Docker Image / build-and-push (push) Successful in 1m29s
All checks were successful
Build and Push Docker Image / build-and-push (push) Successful in 1m29s
This commit is contained in:
@@ -6644,8 +6644,16 @@ func (a *App) getTasksHandler(w http.ResponseWriter, r *http.Request) {
|
||||
LEFT JOIN task_drafts td ON td.task_id = t.id AND td.user_id = $1
|
||||
WHERE t.user_id = $1 AND t.parent_task_id IS NULL AND t.deleted = FALSE
|
||||
ORDER BY
|
||||
-- Сначала разделяем на невыполненные (0) и выполненные (1)
|
||||
CASE WHEN t.last_completed_at IS NULL OR t.last_completed_at::date < CURRENT_DATE THEN 0 ELSE 1 END,
|
||||
t.name
|
||||
-- Для невыполненных: сортируем по completed DESC (больше завершений выше), затем по id ASC (раньше добавленные выше)
|
||||
CASE WHEN t.last_completed_at IS NULL OR t.last_completed_at::date < CURRENT_DATE THEN -t.completed ELSE 0 END,
|
||||
CASE WHEN t.last_completed_at IS NULL OR t.last_completed_at::date < CURRENT_DATE THEN t.id ELSE 0 END,
|
||||
-- Для выполненных: сортируем по next_show_at ASC (ранние в начале), NULL значения в начале через COALESCE
|
||||
CASE WHEN t.last_completed_at IS NOT NULL AND t.last_completed_at::date >= CURRENT_DATE
|
||||
THEN COALESCE(t.next_show_at, '1970-01-01'::timestamp with time zone)
|
||||
ELSE '1970-01-01'::timestamp with time zone
|
||||
END
|
||||
`
|
||||
|
||||
rows, err := a.DB.Query(query, userID)
|
||||
|
||||
Reference in New Issue
Block a user