4.19.0: Добавлены позиции подзадач
All checks were successful
Build and Push Docker Image / build-and-push (push) Successful in 1m34s

This commit is contained in:
poignatov
2026-02-04 21:21:07 +03:00
parent 09ab87b6dd
commit a60bfe97dc
7 changed files with 203 additions and 18 deletions

View File

@@ -0,0 +1,9 @@
-- Migration: Remove position field from tasks table
-- Date: 2026-02-02
--
-- This migration removes the position field from tasks table.
DROP INDEX IF EXISTS idx_tasks_parent_position;
ALTER TABLE tasks
DROP COLUMN IF EXISTS position;

View File

@@ -0,0 +1,49 @@
-- Migration: Add position field to tasks table for subtasks ordering
-- Date: 2026-02-02
--
-- This migration adds position field to tasks table to allow
-- custom ordering of subtasks. The field is NULL for regular tasks
-- and contains position number for subtasks (tasks with parent_task_id).
-- Добавляем поле position
ALTER TABLE tasks
ADD COLUMN position INTEGER;
-- Заполняем позиции для всех существующих подзадач
-- Позиции присваиваются по порядку id в рамках каждой родительской задачи
DO $$
DECLARE
parent_record RECORD;
subtask_record RECORD;
pos INTEGER;
BEGIN
-- Для каждой родительской задачи
FOR parent_record IN
SELECT DISTINCT parent_task_id
FROM tasks
WHERE parent_task_id IS NOT NULL
ORDER BY parent_task_id
LOOP
pos := 0;
-- Обновляем подзадачи этой родительской задачи
FOR subtask_record IN
SELECT id
FROM tasks
WHERE parent_task_id = parent_record.parent_task_id
AND deleted = FALSE
ORDER BY id
LOOP
UPDATE tasks
SET position = pos
WHERE id = subtask_record.id;
pos := pos + 1;
END LOOP;
END LOOP;
END $$;
-- Создаем индекс для быстрой сортировки подзадач
CREATE INDEX idx_tasks_parent_position ON tasks(parent_task_id, position)
WHERE parent_task_id IS NOT NULL AND deleted = FALSE;
COMMENT ON COLUMN tasks.position IS 'Position of subtask within parent task. NULL for regular tasks.';