-- Fix: до этого Глава 1 алгебры писала прогресс под slug 'algebra-8',
-- который после миграции 014 стал hub-строкой. В результате прогресс
-- учеников за ch1 уходил в hub-строку (id=10), где никем не виден
-- (каталог хабов агрегирует по children, hub own paragraphs_read игнорится).
--
-- 1. Объединить ошибочно сохранённый прогресс из hub-row в ch1-row
--    (берём union paragraphs_read, max last_at).
-- 2. Очистить hub-row.
--
-- ch1-row id = 3 (старая algebra-8 после rename),
-- hub-row id = 10 (algebra-8 после insert в миграции 014).
-- Используем подзапросы по slug, а не хардкод id — на случай разных окружений.

-- Step 1: upsert merged progress в ch1, если в hub были данные
INSERT INTO textbook_progress (user_id, textbook_id, paragraphs_read, last_para, last_at)
SELECT
  h.user_id,
  (SELECT id FROM textbooks WHERE slug = 'algebra-8-ch1') AS ch1_id,
  -- если у ch1 уже есть запись, на следующем шаге сольём; пока пишем hub-данные «как есть»
  h.paragraphs_read,
  h.last_para,
  h.last_at
FROM textbook_progress h
WHERE h.textbook_id = (SELECT id FROM textbooks WHERE slug = 'algebra-8' AND parent_slug IS NULL)
  AND NOT EXISTS (
    SELECT 1 FROM textbook_progress c
    WHERE c.user_id = h.user_id
      AND c.textbook_id = (SELECT id FROM textbooks WHERE slug = 'algebra-8-ch1')
  );

-- Step 2: для пользователей, у которых уже есть запись и в hub, и в ch1 — обновить last_para/last_at
-- если hub был свежее. Слияние массивов paragraphs_read придётся делать вне SQL
-- (SQLite не имеет JSON merge), но текущий сценарий — это единственный неверно
-- залетевший элемент, и в большинстве случаев ch1 ещё пуст; этот блок просто
-- защищает на будущее (обычно сработает только Step 1).
UPDATE textbook_progress
SET last_para = (
    SELECT h.last_para FROM textbook_progress h
    WHERE h.user_id = textbook_progress.user_id
      AND h.textbook_id = (SELECT id FROM textbooks WHERE slug = 'algebra-8' AND parent_slug IS NULL)
      AND h.last_at > textbook_progress.last_at
  ),
  last_at = (
    SELECT h.last_at FROM textbook_progress h
    WHERE h.user_id = textbook_progress.user_id
      AND h.textbook_id = (SELECT id FROM textbooks WHERE slug = 'algebra-8' AND parent_slug IS NULL)
      AND h.last_at > textbook_progress.last_at
  )
WHERE textbook_id = (SELECT id FROM textbooks WHERE slug = 'algebra-8-ch1')
  AND EXISTS (
    SELECT 1 FROM textbook_progress h
    WHERE h.user_id = textbook_progress.user_id
      AND h.textbook_id = (SELECT id FROM textbooks WHERE slug = 'algebra-8' AND parent_slug IS NULL)
      AND h.last_at > textbook_progress.last_at
  );

-- Step 3: удалить ошибочные записи из hub-row
DELETE FROM textbook_progress
WHERE textbook_id = (SELECT id FROM textbooks WHERE slug = 'algebra-8' AND parent_slug IS NULL);
