Initial commit: PastPaper Master full stack
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
38
supabase/migrations/002_course_library_fields.sql
Normal file
38
supabase/migrations/002_course_library_fields.sql
Normal file
@@ -0,0 +1,38 @@
|
||||
-- ============================================
|
||||
-- PastPaper Master — Shared course library fields
|
||||
-- Version: 002
|
||||
-- Date: 2026-03-24
|
||||
-- ============================================
|
||||
|
||||
-- Shared library / canonical import metadata on papers
|
||||
ALTER TABLE papers
|
||||
ADD COLUMN IF NOT EXISTS source_kind TEXT NOT NULL DEFAULT 'user_upload'
|
||||
CHECK (source_kind IN ('user_upload', 'course_library')),
|
||||
ADD COLUMN IF NOT EXISTS source_exam_key TEXT,
|
||||
ADD COLUMN IF NOT EXISTS part_label TEXT
|
||||
CHECK (part_label IN ('A', 'B')),
|
||||
ADD COLUMN IF NOT EXISTS source_question_filename TEXT,
|
||||
ADD COLUMN IF NOT EXISTS source_answer_filename TEXT;
|
||||
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS idx_papers_course_library_exam_key
|
||||
ON papers(source_exam_key)
|
||||
WHERE source_kind = 'course_library' AND source_exam_key IS NOT NULL;
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_papers_course_lookup
|
||||
ON papers(course_code, year, term, exam_type, part_label);
|
||||
|
||||
-- Grading results should persist awarded score
|
||||
ALTER TABLE user_attempts
|
||||
ADD COLUMN IF NOT EXISTS score_given INTEGER;
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_attempts_errorbook_active
|
||||
ON user_attempts(user_id, created_at DESC)
|
||||
WHERE in_error_book = true AND mastered = false;
|
||||
|
||||
-- The backend and frontend already support true_false; schema must match.
|
||||
ALTER TABLE paper_questions
|
||||
DROP CONSTRAINT IF EXISTS paper_questions_question_type_check;
|
||||
|
||||
ALTER TABLE paper_questions
|
||||
ADD CONSTRAINT paper_questions_question_type_check
|
||||
CHECK (question_type IN ('mc', 'true_false', 'fill_blank', 'long_question'));
|
||||
Reference in New Issue
Block a user