CREATE TABLE `channel_members` ( `id` text PRIMARY KEY NOT NULL, `channel_id` text NOT NULL, `user_id` text NOT NULL, `role` text DEFAULT 'member' NOT NULL, `notify_level` text DEFAULT 'all' NOT NULL, `joined_at` text NOT NULL, FOREIGN KEY (`channel_id`) REFERENCES `channels`(`id`) ON UPDATE no action ON DELETE cascade, FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON UPDATE no action ON DELETE cascade ); --> statement-breakpoint CREATE TABLE `channel_read_state` ( `id` text PRIMARY KEY NOT NULL, `user_id` text NOT NULL, `channel_id` text NOT NULL, `last_read_message_id` text, `last_read_at` text NOT NULL, `unread_count` integer DEFAULT 0 NOT NULL, FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON UPDATE no action ON DELETE cascade, FOREIGN KEY (`channel_id`) REFERENCES `channels`(`id`) ON UPDATE no action ON DELETE cascade ); --> statement-breakpoint CREATE TABLE `channels` ( `id` text PRIMARY KEY NOT NULL, `name` text NOT NULL, `type` text DEFAULT 'text' NOT NULL, `description` text, `organization_id` text NOT NULL, `project_id` text, `is_private` integer DEFAULT false NOT NULL, `created_by` text NOT NULL, `sort_order` integer DEFAULT 0 NOT NULL, `archived_at` text, `created_at` text NOT NULL, `updated_at` text NOT NULL, FOREIGN KEY (`organization_id`) REFERENCES `organizations`(`id`) ON UPDATE no action ON DELETE cascade, FOREIGN KEY (`project_id`) REFERENCES `projects`(`id`) ON UPDATE no action ON DELETE cascade, FOREIGN KEY (`created_by`) REFERENCES `users`(`id`) ON UPDATE no action ON DELETE no action ); --> statement-breakpoint CREATE TABLE `message_attachments` ( `id` text PRIMARY KEY NOT NULL, `message_id` text NOT NULL, `file_name` text NOT NULL, `mime_type` text NOT NULL, `file_size` integer NOT NULL, `r2_path` text NOT NULL, `width` integer, `height` integer, `uploaded_at` text NOT NULL, FOREIGN KEY (`message_id`) REFERENCES `messages`(`id`) ON UPDATE no action ON DELETE cascade ); --> statement-breakpoint CREATE TABLE `message_reactions` ( `id` text PRIMARY KEY NOT NULL, `message_id` text NOT NULL, `user_id` text NOT NULL, `emoji` text NOT NULL, `created_at` text NOT NULL, FOREIGN KEY (`message_id`) REFERENCES `messages`(`id`) ON UPDATE no action ON DELETE cascade, FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON UPDATE no action ON DELETE cascade ); --> statement-breakpoint CREATE TABLE `messages` ( `id` text PRIMARY KEY NOT NULL, `channel_id` text NOT NULL, `thread_id` text, `user_id` text NOT NULL, `content` text NOT NULL, `content_html` text, `edited_at` text, `deleted_at` text, `deleted_by` text, `is_pinned` integer DEFAULT false NOT NULL, `reply_count` integer DEFAULT 0 NOT NULL, `last_reply_at` text, `created_at` text NOT NULL, FOREIGN KEY (`channel_id`) REFERENCES `channels`(`id`) ON UPDATE no action ON DELETE cascade, FOREIGN KEY (`thread_id`) REFERENCES `messages`(`id`) ON UPDATE no action ON DELETE no action, FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON UPDATE no action ON DELETE no action, FOREIGN KEY (`deleted_by`) REFERENCES `users`(`id`) ON UPDATE no action ON DELETE no action );