feat(academic): курсы, bootstrap и привязка лабораторных

This commit is contained in:
2026-10-27 15:37:46 +03:00
parent 0c68702e8f
commit 0c51bf2d12
18 changed files with 1289 additions and 15 deletions

View File

@@ -0,0 +1,3 @@
-- Один и тот же курс не должен появиться дважды из-за конкурентного bootstrap:
-- уникальный индекс по lower(title) сериализует вставку на уровне БД.
CREATE UNIQUE INDEX courses_title_lower_uidx ON courses (lower(title));

View File

@@ -1,6 +1,6 @@
-- Лабораторные привязываются к курсу. Nullable-фаза: курс C создаёт
-- bootstrap после первого входа админа, затем выполняется post-bootstrap
-- миграция с SET NOT NULL.
-- bootstrap после первого входа админа. `labs.course_id NOT NULL` выставляется
-- в рантайме сервисом CourseBootstrapService после переноса, не отдельным Flyway-файлом.
ALTER TABLE labs ADD COLUMN course_id uuid REFERENCES courses (id) ON DELETE RESTRICT;
ALTER TABLE labs DROP CONSTRAINT IF EXISTS labs_number_semester_unique;