64 lines
2.2 KiB
SQL
64 lines
2.2 KiB
SQL
CREATE TABLE `audio_file` (
|
|
`id` text PRIMARY KEY NOT NULL,
|
|
`filename` text NOT NULL,
|
|
`content_type` text NOT NULL,
|
|
`data` blob NOT NULL,
|
|
`duration` real,
|
|
`created_at` integer NOT NULL
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE TABLE `invite_link` (
|
|
`id` text PRIMARY KEY NOT NULL,
|
|
`token` text NOT NULL,
|
|
`participant_name` text,
|
|
`is_used` integer DEFAULT false NOT NULL,
|
|
`created_at` integer NOT NULL,
|
|
`used_at` integer
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE UNIQUE INDEX `invite_link_token_unique` ON `invite_link` (`token`);--> statement-breakpoint
|
|
CREATE TABLE `participant` (
|
|
`id` text PRIMARY KEY NOT NULL,
|
|
`invite_token` text NOT NULL,
|
|
`session_id` text,
|
|
`created_at` integer NOT NULL,
|
|
FOREIGN KEY (`invite_token`) REFERENCES `invite_link`(`token`) ON UPDATE no action ON DELETE no action
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE TABLE `participant_progress` (
|
|
`id` text PRIMARY KEY NOT NULL,
|
|
`participant_id` text NOT NULL,
|
|
`audio_file_id` text NOT NULL,
|
|
`is_completed` integer DEFAULT false NOT NULL,
|
|
`last_position` real DEFAULT 0,
|
|
`updated_at` integer NOT NULL,
|
|
FOREIGN KEY (`participant_id`) REFERENCES `participant`(`id`) ON UPDATE no action ON DELETE no action,
|
|
FOREIGN KEY (`audio_file_id`) REFERENCES `audio_file`(`id`) ON UPDATE no action ON DELETE no action
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE TABLE `rating` (
|
|
`id` text PRIMARY KEY NOT NULL,
|
|
`participant_id` text NOT NULL,
|
|
`audio_file_id` text NOT NULL,
|
|
`timestamp` real NOT NULL,
|
|
`value` real NOT NULL,
|
|
`created_at` integer NOT NULL,
|
|
FOREIGN KEY (`participant_id`) REFERENCES `participant`(`id`) ON UPDATE no action ON DELETE no action,
|
|
FOREIGN KEY (`audio_file_id`) REFERENCES `audio_file`(`id`) ON UPDATE no action ON DELETE no action
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE TABLE `session` (
|
|
`id` text PRIMARY KEY NOT NULL,
|
|
`user_id` text NOT NULL,
|
|
`expires_at` integer NOT NULL,
|
|
FOREIGN KEY (`user_id`) REFERENCES `user`(`id`) ON UPDATE no action ON DELETE no action
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE TABLE `user` (
|
|
`id` text PRIMARY KEY NOT NULL,
|
|
`age` integer,
|
|
`username` text NOT NULL,
|
|
`password_hash` text NOT NULL
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE UNIQUE INDEX `user_username_unique` ON `user` (`username`); |