Files
BoostAI/Backend/db/migrations/007_review_contract.sql
2026-05-25 17:05:06 +01:00

67 lines
3.1 KiB
SQL

-- +goose Up
CREATE TYPE assignment_pass_status AS ENUM ('pending', 'pass', 'no_pass');
ALTER TABLE student_answers
ADD COLUMN review_needs_attention BOOLEAN NOT NULL DEFAULT FALSE,
ADD COLUMN review_issue_reason TEXT,
ADD COLUMN review_correctness_score NUMERIC(4,3),
ADD COLUMN review_understanding_score NUMERIC(4,3),
ADD COLUMN review_question_score NUMERIC(4,3),
ADD COLUMN review_confidence NUMERIC(4,3),
ADD COLUMN review_tags TEXT[] NOT NULL DEFAULT ARRAY[]::TEXT[],
ADD CONSTRAINT student_answers_review_correctness_score_range_check
CHECK (review_correctness_score IS NULL OR (review_correctness_score >= 0 AND review_correctness_score <= 1)),
ADD CONSTRAINT student_answers_review_understanding_score_range_check
CHECK (review_understanding_score IS NULL OR (review_understanding_score >= 0 AND review_understanding_score <= 1)),
ADD CONSTRAINT student_answers_review_question_score_range_check
CHECK (review_question_score IS NULL OR (review_question_score >= 0 AND review_question_score <= 1)),
ADD CONSTRAINT student_answers_review_confidence_range_check
CHECK (review_confidence IS NULL OR (review_confidence >= 0 AND review_confidence <= 1));
UPDATE student_answers
SET review_correctness_score = CASE
WHEN is_correct IS TRUE THEN 1.000
WHEN is_correct IS FALSE THEN 0.000
ELSE NULL
END,
review_question_score = CASE
WHEN is_correct IS TRUE THEN 1.000
WHEN is_correct IS FALSE THEN 0.000
ELSE NULL
END
WHERE is_correct IS NOT NULL;
ALTER TABLE assignment_assignees
ADD COLUMN overall_score NUMERIC(5,2),
ADD COLUMN pass_threshold NUMERIC(5,2) NOT NULL DEFAULT 8.00,
ADD COLUMN pass_status assignment_pass_status NOT NULL DEFAULT 'pending',
ADD CONSTRAINT assignment_assignees_overall_score_range_check
CHECK (overall_score IS NULL OR (overall_score >= 0 AND overall_score <= 10)),
ADD CONSTRAINT assignment_assignees_pass_threshold_range_check
CHECK (pass_threshold >= 0 AND pass_threshold <= 10);
-- +goose Down
ALTER TABLE assignment_assignees
DROP CONSTRAINT IF EXISTS assignment_assignees_pass_threshold_range_check,
DROP CONSTRAINT IF EXISTS assignment_assignees_overall_score_range_check,
DROP COLUMN IF EXISTS pass_status,
DROP COLUMN IF EXISTS pass_threshold,
DROP COLUMN IF EXISTS overall_score;
ALTER TABLE student_answers
DROP CONSTRAINT IF EXISTS student_answers_review_confidence_range_check,
DROP CONSTRAINT IF EXISTS student_answers_review_question_score_range_check,
DROP CONSTRAINT IF EXISTS student_answers_review_understanding_score_range_check,
DROP CONSTRAINT IF EXISTS student_answers_review_correctness_score_range_check,
DROP COLUMN IF EXISTS review_tags,
DROP COLUMN IF EXISTS review_confidence,
DROP COLUMN IF EXISTS review_question_score,
DROP COLUMN IF EXISTS review_understanding_score,
DROP COLUMN IF EXISTS review_correctness_score,
DROP COLUMN IF EXISTS review_issue_reason,
DROP COLUMN IF EXISTS review_needs_attention;
DROP TYPE IF EXISTS assignment_pass_status;