soroban-abacus-flashcards/apps/web/drizzle/0023_flaky_naoko.sql

46 lines
1.4 KiB
SQL

-- Custom SQL migration file, put your code below! --
-- Session plans table for practice session planning and tracking
CREATE TABLE IF NOT EXISTS `session_plans` (
`id` text PRIMARY KEY NOT NULL,
`player_id` text NOT NULL,
-- Setup parameters
`target_duration_minutes` integer NOT NULL,
`estimated_problem_count` integer NOT NULL,
`avg_time_per_problem_seconds` integer NOT NULL,
-- Plan content (JSON)
`slots` text NOT NULL,
`summary` text NOT NULL,
-- Session state
`status` text NOT NULL DEFAULT 'draft',
`current_slot_index` integer NOT NULL DEFAULT 0,
`session_health` text,
`adjustments` text NOT NULL DEFAULT '[]',
`results` text NOT NULL DEFAULT '[]',
-- Practice mode settings
`visualization_mode` integer NOT NULL DEFAULT 0,
`problem_format` text NOT NULL DEFAULT 'vertical',
-- Timestamps
`created_at` integer NOT NULL,
`approved_at` integer,
`started_at` integer,
`completed_at` integer,
FOREIGN KEY (`player_id`) REFERENCES `players`(`id`) ON DELETE CASCADE
);
--> statement-breakpoint
-- Indexes for performance
CREATE INDEX IF NOT EXISTS `session_plans_player_id_idx` ON `session_plans` (`player_id`);
--> statement-breakpoint
CREATE INDEX IF NOT EXISTS `session_plans_status_idx` ON `session_plans` (`status`);
--> statement-breakpoint
CREATE INDEX IF NOT EXISTS `session_plans_created_at_idx` ON `session_plans` (`created_at`);