47 lines
1.9 KiB
PL/PgSQL
47 lines
1.9 KiB
PL/PgSQL
-- Tear down the legacy course / learning-tree schema so a new hierarchy can be introduced.
|
|
BEGIN;
|
|
|
|
-- Entry-assessment automation on sub_courses (from 000024)
|
|
DROP TRIGGER IF EXISTS trg_sub_courses_create_entry_assessment ON sub_courses;
|
|
DROP FUNCTION IF EXISTS create_sub_course_entry_assessment();
|
|
DROP FUNCTION IF EXISTS clone_default_initial_assessment_items(BIGINT);
|
|
DROP INDEX IF EXISTS idx_question_sets_unique_subcourse_initial_assessment;
|
|
|
|
ALTER TABLE question_sets DROP COLUMN IF EXISTS sub_course_video_id;
|
|
|
|
-- Dependent objects first
|
|
DROP TABLE IF EXISTS user_sub_course_video_progress CASCADE;
|
|
DROP TABLE IF EXISTS user_practice_progress CASCADE;
|
|
DROP TABLE IF EXISTS sub_course_prerequisites CASCADE;
|
|
DROP TABLE IF EXISTS user_sub_course_progress CASCADE;
|
|
|
|
DROP TABLE IF EXISTS sub_module_practices CASCADE;
|
|
DROP TABLE IF EXISTS sub_module_capstones CASCADE;
|
|
DROP TABLE IF EXISTS sub_module_lessons CASCADE;
|
|
DROP TABLE IF EXISTS sub_module_videos CASCADE;
|
|
DROP TABLE IF EXISTS sub_modules CASCADE;
|
|
DROP TABLE IF EXISTS module_capstones CASCADE;
|
|
DROP TABLE IF EXISTS modules CASCADE;
|
|
DROP TABLE IF EXISTS levels CASCADE;
|
|
|
|
DROP TABLE IF EXISTS sub_course_videos CASCADE;
|
|
DROP TABLE IF EXISTS sub_courses CASCADE;
|
|
DROP TABLE IF EXISTS course_sub_categories CASCADE;
|
|
DROP TABLE IF EXISTS courses CASCADE;
|
|
DROP TABLE IF EXISTS course_categories CASCADE;
|
|
|
|
-- Keep learner practice completion for the questions system (no sub_course column)
|
|
CREATE TABLE user_practice_progress (
|
|
id BIGSERIAL PRIMARY KEY,
|
|
user_id BIGINT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
|
question_set_id BIGINT NOT NULL REFERENCES question_sets(id) ON DELETE CASCADE,
|
|
completed_at TIMESTAMPTZ,
|
|
updated_at TIMESTAMPTZ,
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
UNIQUE (user_id, question_set_id)
|
|
);
|
|
|
|
CREATE INDEX idx_user_practice_progress_user_id ON user_practice_progress(user_id);
|
|
|
|
COMMIT;
|