Yimaru-BackEnd/db/migrations/000078_hierarchy_publish_status.up.sql
Yared Yemane e56bea3abf feat: add hierarchy publish status and resolve question type definition IDs
Extend DRAFT/PUBLISHED to programs, courses, modules, and exam-prep hierarchy entities with learner visibility gating and progress exclusion. Resolve question_type_definition_id in question responses for legacy system types and unlinked dynamic questions.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-10 02:40:16 -07:00

55 lines
2.3 KiB
SQL

-- Draft vs published visibility for the remaining LMS and exam-prep hierarchy levels
-- (mirrors lessons.publish_status from 000062 and practice publish_status from 000060).
-- Existing rows stay PUBLISHED; new inserts default to DRAFT unless the API sends PUBLISHED.
-- LMS hierarchy
ALTER TABLE programs
ADD COLUMN publish_status VARCHAR(16) NOT NULL DEFAULT 'PUBLISHED'
CONSTRAINT chk_programs_publish_status CHECK (publish_status IN ('DRAFT', 'PUBLISHED'));
ALTER TABLE programs
ALTER COLUMN publish_status SET DEFAULT 'DRAFT';
ALTER TABLE courses
ADD COLUMN publish_status VARCHAR(16) NOT NULL DEFAULT 'PUBLISHED'
CONSTRAINT chk_courses_publish_status CHECK (publish_status IN ('DRAFT', 'PUBLISHED'));
ALTER TABLE courses
ALTER COLUMN publish_status SET DEFAULT 'DRAFT';
ALTER TABLE modules
ADD COLUMN publish_status VARCHAR(16) NOT NULL DEFAULT 'PUBLISHED'
CONSTRAINT chk_modules_publish_status CHECK (publish_status IN ('DRAFT', 'PUBLISHED'));
ALTER TABLE modules
ALTER COLUMN publish_status SET DEFAULT 'DRAFT';
-- Exam-prep hierarchy
ALTER TABLE exam_prep.catalog_courses
ADD COLUMN publish_status VARCHAR(16) NOT NULL DEFAULT 'PUBLISHED'
CONSTRAINT chk_exam_prep_catalog_courses_publish_status CHECK (publish_status IN ('DRAFT', 'PUBLISHED'));
ALTER TABLE exam_prep.catalog_courses
ALTER COLUMN publish_status SET DEFAULT 'DRAFT';
ALTER TABLE exam_prep.units
ADD COLUMN publish_status VARCHAR(16) NOT NULL DEFAULT 'PUBLISHED'
CONSTRAINT chk_exam_prep_units_publish_status CHECK (publish_status IN ('DRAFT', 'PUBLISHED'));
ALTER TABLE exam_prep.units
ALTER COLUMN publish_status SET DEFAULT 'DRAFT';
ALTER TABLE exam_prep.unit_modules
ADD COLUMN publish_status VARCHAR(16) NOT NULL DEFAULT 'PUBLISHED'
CONSTRAINT chk_exam_prep_unit_modules_publish_status CHECK (publish_status IN ('DRAFT', 'PUBLISHED'));
ALTER TABLE exam_prep.unit_modules
ALTER COLUMN publish_status SET DEFAULT 'DRAFT';
ALTER TABLE exam_prep.unit_module_lessons
ADD COLUMN publish_status VARCHAR(16) NOT NULL DEFAULT 'PUBLISHED'
CONSTRAINT chk_exam_prep_unit_module_lessons_publish_status CHECK (publish_status IN ('DRAFT', 'PUBLISHED'));
ALTER TABLE exam_prep.unit_module_lessons
ALTER COLUMN publish_status SET DEFAULT 'DRAFT';