soroban-abacus-flashcards/apps/web/drizzle/0072_sudden_shard.sql

64 lines
2.2 KiB
SQL

-- Custom SQL migration file, put your code below! --
-- Teacher Flowcharts table
CREATE TABLE IF NOT EXISTS `teacher_flowcharts` (
`id` text PRIMARY KEY NOT NULL,
`user_id` text NOT NULL,
`title` text NOT NULL,
`description` text,
`emoji` text DEFAULT '📊',
`difficulty` text,
`definition_json` text NOT NULL,
`mermaid_content` text NOT NULL,
`version` integer DEFAULT 1 NOT NULL,
`parent_version_id` text,
`status` text DEFAULT 'draft' NOT NULL,
`published_at` integer,
`search_keywords` text,
`created_at` integer NOT NULL,
`updated_at` integer NOT NULL,
FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON UPDATE no action ON DELETE cascade
);
--> statement-breakpoint
CREATE INDEX IF NOT EXISTS `teacher_flowcharts_user_idx` ON `teacher_flowcharts` (`user_id`);
--> statement-breakpoint
CREATE INDEX IF NOT EXISTS `teacher_flowcharts_status_idx` ON `teacher_flowcharts` (`status`);
--> statement-breakpoint
CREATE INDEX IF NOT EXISTS `teacher_flowcharts_parent_version_idx` ON `teacher_flowcharts` (`parent_version_id`);
--> statement-breakpoint
-- Workshop Sessions table
CREATE TABLE IF NOT EXISTS `workshop_sessions` (
`id` text PRIMARY KEY NOT NULL,
`user_id` text NOT NULL,
`flowchart_id` text,
`remix_from_id` text,
`state` text DEFAULT 'initial' NOT NULL,
`topic_description` text,
`refinement_history` text,
`draft_definition_json` text,
`draft_mermaid_content` text,
`draft_title` text,
`draft_description` text,
`draft_difficulty` text,
`draft_emoji` text,
`draft_notes` text,
`created_at` integer NOT NULL,
`updated_at` integer NOT NULL,
`expires_at` integer NOT NULL,
FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON UPDATE no action ON DELETE cascade,
FOREIGN KEY (`flowchart_id`) REFERENCES `teacher_flowcharts`(`id`) ON UPDATE no action ON DELETE set null
);
--> statement-breakpoint
CREATE INDEX IF NOT EXISTS `workshop_sessions_user_idx` ON `workshop_sessions` (`user_id`);
--> statement-breakpoint
CREATE INDEX IF NOT EXISTS `workshop_sessions_state_idx` ON `workshop_sessions` (`state`);
--> statement-breakpoint
CREATE INDEX IF NOT EXISTS `workshop_sessions_expires_idx` ON `workshop_sessions` (`expires_at`);