-- Добавляем колонку order в таблицу draft_invoice_items
-- Миграция для добавления поля сортировки позиций в черновике накладной

-- Добавляем колонку order со значением по умолчанию 0
ALTER TABLE draft_invoice_items ADD COLUMN "order" INTEGER NOT NULL DEFAULT 0;

-- Инициализируем значения order для существующих записей
-- Сортируем по created_at для сохранения текущего порядка
WITH ordered_items AS (
    SELECT id, ROW_NUMBER() OVER (PARTITION BY draft_id ORDER BY created_at ASC) as row_num
    FROM draft_invoice_items
)
UPDATE draft_invoice_items
SET "order" = ordered_items.row_num
FROM ordered_items
WHERE draft_invoice_items.id = ordered_items.id;

-- Создаем индекс для оптимизации сортировки
CREATE INDEX idx_draft_items_order ON draft_invoice_items(draft_id, "order");
