Preflight перед миграциями групп и курсов
Перед любыми миграциями обязателен backup: ./deploy/backup.sh backup
(см. ../BACKUP.md). Preflight не заменяет backup.
Скрипты только читают данные:
groups-courses.sql— до миграций: проблемы, которые могут помешать;groups-courses-post.sql— после миграций и bootstrap курса C: проверка результата;progress-v10-v13.sql— проверка истории Flyway и колонок/индекса при переходе старой feature-миграции V10 на V13.
До миграций
psql -h localhost -U lms -d lms -f deploy/preflight/groups-courses.sql
Проверяет:
- группы, имя которых не разбирается шаблоном;
- одинаковые кортежи
(stream, degree, number, course, enrollment_year); - группы без полного набора полей;
- одинаковые имена групп;
- студентов без текущей группы;
- дубли номеров лабораторных при переносе в один курс;
- дубли slug глав;
- объём материалов и активов.
После миграций и bootstrap
psql -h localhost -U lms -d lms -f deploy/preflight/groups-courses-post.sql
Проверяет:
- лабы без курса (должно быть
0передSET NOT NULL); - главы без курса (должно быть
0, если все текущие материалы курсовые); - наличие ровно одного курса C;
- комментарии без автора;
- статусы аккаунтов;
- группы без полного разбора.
Переход V10 → V13
Нужен для любой БД, которая когда-либо применяла старую feature-миграцию
V10__profile_authors.sql: dev/feature-БД и staging, ненадолго запускавший
master-коммит bfdae41 (out-of-order + V10). На production/master записи V10
нет — раздел можно пропустить.
Порядок:
-
Backup:
./deploy/backup.sh backup. -
Проверить состояние:
psql -h localhost -U lms -d lms -f deploy/preflight/progress-v10-v13.sqlКолонки должны быть
uuid/nullable, индексlab_grades_lab_idx— существовать и быть валидным;columns_okиindex_okдолжны бытьtrue. -
Если V10 есть в истории с
success=true, удалить только эту запись истории (flyway repairили точечныйDELETEиз примера в конце скрипта). Приsuccess=falseсначала проверить откат объектов; V13 идемпотентна и создаст недостающее. -
Deploy: обычный запуск применит V13.
-
Postflight:
psql -h localhost -U lms -d lms -f deploy/preflight/groups-courses-post.sql.
После V13 переход forward-only: откат на сборку без V13 не пройдёт валидацию
Flyway. Не оставляйте out-of-order включённым.
Что делать с результатами
- Группы с нестандартными именами — разобрать вручную и заполнить поля до
перехода на
NOT NULL. - Одинаковые кортежи — исправить номер или год набора.
- Дубли номеров лаб — перенумеровать или разнести по разным курсам до
включения
UNIQUE (number, course_id)/NOT NULL. - Дубли slug — переименовать главы до частичных индексов.
- После bootstrap курса C проверить, что
labs_without_course = 0иchapters_without_course = 0.