Revisione/drizzle/0000_init.sql

76 lines
2.5 KiB
SQL

CREATE TABLE `courses` (
`id` text PRIMARY KEY NOT NULL,
`title` text NOT NULL,
`subject` text NOT NULL,
`status` text DEFAULT 'processing' NOT NULL,
`stage` text,
`cost_ai` real DEFAULT 0,
`cost_audio` real DEFAULT 0,
`audit_report` text,
`audit_score` integer,
`organisation` text,
`created_at` text DEFAULT (datetime('now')) NOT NULL
);
--> statement-breakpoint
CREATE TABLE `uploads` (
`id` text PRIMARY KEY NOT NULL,
`course_id` text NOT NULL,
`filename` text NOT NULL,
`type` text NOT NULL,
`stored_path` text NOT NULL,
`extracted_text` text,
`created_at` text DEFAULT (datetime('now')) NOT NULL,
FOREIGN KEY (`course_id`) REFERENCES `courses`(`id`) ON UPDATE no action ON DELETE no action
);
--> statement-breakpoint
CREATE TABLE `topics` (
`id` text PRIMARY KEY NOT NULL,
`course_id` text NOT NULL,
`title` text NOT NULL,
`description` text NOT NULL,
`order` integer NOT NULL,
`prerequisite_topic_ids` text DEFAULT '[]' NOT NULL,
`difficulty` integer DEFAULT 1 NOT NULL,
`relevant_files` text,
`status` text DEFAULT 'pending' NOT NULL,
FOREIGN KEY (`course_id`) REFERENCES `courses`(`id`) ON UPDATE no action ON DELETE no action
);
--> statement-breakpoint
CREATE TABLE `lessons` (
`id` text PRIMARY KEY NOT NULL,
`topic_id` text NOT NULL,
`content` text NOT NULL,
`tts_provider` text,
`cost_ai` real DEFAULT 0,
`cost_audio` real DEFAULT 0,
`cost_branch_ai` real DEFAULT 0,
`cost_branch_audio` real DEFAULT 0,
`cost_total` real DEFAULT 0,
`branch_status` text DEFAULT 'pending' NOT NULL,
`created_at` text DEFAULT (datetime('now')) NOT NULL,
FOREIGN KEY (`topic_id`) REFERENCES `topics`(`id`) ON UPDATE no action ON DELETE no action
);
--> statement-breakpoint
CREATE TABLE `quiz_questions` (
`id` text PRIMARY KEY NOT NULL,
`topic_id` text NOT NULL,
`question` text NOT NULL,
`type` text NOT NULL,
`options` text,
`answer` text NOT NULL,
`explanation` text NOT NULL,
FOREIGN KEY (`topic_id`) REFERENCES `topics`(`id`) ON UPDATE no action ON DELETE no action
);
--> statement-breakpoint
CREATE TABLE `user_progress` (
`id` text PRIMARY KEY NOT NULL,
`course_id` text NOT NULL,
`topic_id` text NOT NULL,
`lesson_complete` integer DEFAULT false NOT NULL,
`quiz_score` integer,
`took_branches` integer DEFAULT false NOT NULL,
`branch_count` integer DEFAULT 0 NOT NULL,
`updated_at` text DEFAULT (datetime('now')) NOT NULL,
FOREIGN KEY (`course_id`) REFERENCES `courses`(`id`) ON UPDATE no action ON DELETE no action,
FOREIGN KEY (`topic_id`) REFERENCES `topics`(`id`) ON UPDATE no action ON DELETE no action
);