46 lines
1.4 KiB
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`);
|