integratedhub/drizzle/0003_brain_mode_progression.sql
2026-01-20 09:02:26 -06:00

44 lines
1.6 KiB
SQL

-- Migration: Add mode progression columns to brain_question_progress
-- This migration alters the brain_question_progress table to support per-card mode progression
-- Step 1: Add new columns with defaults
ALTER TABLE "brain_question_progress"
ADD COLUMN IF NOT EXISTS "current_mode" text DEFAULT 'photo-see-bisaya',
ADD COLUMN IF NOT EXISTS "mode_index" integer DEFAULT 0,
ADD COLUMN IF NOT EXISTS "consecutive_first_try" integer DEFAULT 0,
ADD COLUMN IF NOT EXISTS "is_review_only" boolean DEFAULT false;
--> statement-breakpoint
-- Step 2: Migrate existing data - copy 'mode' to 'current_mode' if it exists
UPDATE "brain_question_progress"
SET "current_mode" = COALESCE("mode", 'photo-see-bisaya')
WHERE "current_mode" IS NULL OR "current_mode" = 'photo-see-bisaya';
--> statement-breakpoint
-- Step 3: Set mode_index based on current_mode value
UPDATE "brain_question_progress"
SET "mode_index" = CASE "current_mode"
WHEN 'photo-see-bisaya' THEN 0
WHEN 'photo-see-english' THEN 1
WHEN 'photo-hide-bisaya' THEN 2
WHEN 'photo-hide-english' THEN 3
WHEN 'blank-see-bisaya' THEN 4
WHEN 'blank-see-english' THEN 5
ELSE 0
END
WHERE "mode_index" = 0 OR "mode_index" IS NULL;
--> statement-breakpoint
-- Step 4: Make current_mode NOT NULL now that all rows have values
ALTER TABLE "brain_question_progress"
ALTER COLUMN "current_mode" SET NOT NULL;
--> statement-breakpoint
-- Step 5: Drop the old 'mode' column (optional - keeping for backwards compatibility during transition)
-- Note: We keep 'mode' column temporarily in case of rollback needs
-- ALTER TABLE "brain_question_progress" DROP COLUMN IF EXISTS "mode";