diff --git a/assets/pasted-20260219-164830-4e1d84f3.png b/assets/pasted-20260219-164830-4e1d84f3.png new file mode 100644 index 0000000..3ba126a Binary files /dev/null and b/assets/pasted-20260219-164830-4e1d84f3.png differ diff --git a/check_users.php b/check_users.php new file mode 100644 index 0000000..d83595c --- /dev/null +++ b/check_users.php @@ -0,0 +1,13 @@ +query("SELECT id, username, email FROM users"); + $users = $stmt->fetchAll(); + echo "Liste des utilisateurs :\n"; + foreach ($users as $user) { + echo "- ID: {$user['id']} | Username: {$user['username']} | Email: {$user['email']}\n"; + } +} catch (Exception $e) { + echo "Erreur : " . $e->getMessage(); +} +unlink(__FILE__); diff --git a/database/schema.sql b/database/schema.sql index 4b64023..6028fd5 100644 --- a/database/schema.sql +++ b/database/schema.sql @@ -1,94 +1,556 @@ --- Initial schema for Discord-like app -CREATE TABLE IF NOT EXISTS users ( - id INT AUTO_INCREMENT PRIMARY KEY, - username VARCHAR(50) NOT NULL UNIQUE, - email VARCHAR(100) NOT NULL UNIQUE, - password_hash VARCHAR(255) NOT NULL, - avatar_url VARCHAR(255), - status VARCHAR(20) DEFAULT 'offline', - is_bot BOOLEAN DEFAULT FALSE, - bot_token VARCHAR(64) UNIQUE, - created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP -); +/*M!999999\- enable the sandbox mode */ +-- MariaDB dump 10.19 Distrib 10.11.14-MariaDB, for debian-linux-gnu (x86_64) +-- +-- Host: 127.0.0.1 Database: app_38443 +-- ------------------------------------------------------ +-- Server version 10.11.14-MariaDB-0+deb12u2 -CREATE TABLE IF NOT EXISTS servers ( - id INT AUTO_INCREMENT PRIMARY KEY, - name VARCHAR(100) NOT NULL, - owner_id INT NOT NULL, - icon_url VARCHAR(255), - invite_code VARCHAR(10) UNIQUE, - created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - FOREIGN KEY (owner_id) REFERENCES users(id) -); +/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; +/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; +/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; +/*!40101 SET NAMES utf8mb4 */; +/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; +/*!40103 SET TIME_ZONE='+00:00' */; +/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; +/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; +/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; +/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; -CREATE TABLE IF NOT EXISTS channels ( - id INT AUTO_INCREMENT PRIMARY KEY, - server_id INT NOT NULL, - name VARCHAR(100) NOT NULL, - type ENUM('text', 'voice') DEFAULT 'text', - created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - FOREIGN KEY (server_id) REFERENCES servers(id) ON DELETE CASCADE -); +-- +-- Table structure for table `channel_autoroles` +-- -CREATE TABLE IF NOT EXISTS messages ( - id INT AUTO_INCREMENT PRIMARY KEY, - channel_id INT NOT NULL, - user_id INT NOT NULL, - content TEXT NOT NULL, - created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - FOREIGN KEY (channel_id) REFERENCES channels(id) ON DELETE CASCADE, - FOREIGN KEY (user_id) REFERENCES users(id) -); +DROP TABLE IF EXISTS `channel_autoroles`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `channel_autoroles` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `channel_id` int(11) NOT NULL, + `icon` varchar(50) NOT NULL, + `title` varchar(255) NOT NULL, + `role_id` int(11) NOT NULL, + `created_at` timestamp NULL DEFAULT current_timestamp(), + PRIMARY KEY (`id`), + KEY `channel_id` (`channel_id`), + KEY `role_id` (`role_id`), + CONSTRAINT `channel_autoroles_ibfk_1` FOREIGN KEY (`channel_id`) REFERENCES `channels` (`id`) ON DELETE CASCADE, + CONSTRAINT `channel_autoroles_ibfk_2` FOREIGN KEY (`role_id`) REFERENCES `roles` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; -CREATE TABLE IF NOT EXISTS webhooks ( - id INT AUTO_INCREMENT PRIMARY KEY, - name VARCHAR(100) NOT NULL, - token VARCHAR(64) NOT NULL UNIQUE, - channel_id INT NOT NULL, - created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - FOREIGN KEY (channel_id) REFERENCES channels(id) ON DELETE CASCADE -); +-- +-- Table structure for table `channel_last_read` +-- -CREATE TABLE IF NOT EXISTS roles ( - id INT AUTO_INCREMENT PRIMARY KEY, - server_id INT NOT NULL, - name VARCHAR(50) NOT NULL, - color VARCHAR(7) DEFAULT '#99aab5', - permissions INT DEFAULT 0, - position INT DEFAULT 0, - FOREIGN KEY (server_id) REFERENCES servers(id) ON DELETE CASCADE -); +DROP TABLE IF EXISTS `channel_last_read`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `channel_last_read` ( + `channel_id` int(11) NOT NULL, + `user_id` int(11) NOT NULL, + `last_read_at` timestamp NULL DEFAULT current_timestamp(), + PRIMARY KEY (`channel_id`,`user_id`), + KEY `user_id` (`user_id`), + CONSTRAINT `channel_last_read_ibfk_1` FOREIGN KEY (`channel_id`) REFERENCES `channels` (`id`) ON DELETE CASCADE, + CONSTRAINT `channel_last_read_ibfk_2` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; -CREATE TABLE IF NOT EXISTS user_roles ( - user_id INT NOT NULL, - role_id INT NOT NULL, - PRIMARY KEY (user_id, role_id), - FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE, - FOREIGN KEY (role_id) REFERENCES roles(id) ON DELETE CASCADE -); +-- +-- Table structure for table `channel_members` +-- -CREATE TABLE IF NOT EXISTS server_members ( - server_id INT NOT NULL, - user_id INT NOT NULL, - joined_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - PRIMARY KEY (server_id, user_id), - FOREIGN KEY (server_id) REFERENCES servers(id) ON DELETE CASCADE, - FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE -); +DROP TABLE IF EXISTS `channel_members`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `channel_members` ( + `channel_id` int(11) NOT NULL, + `user_id` int(11) NOT NULL, + `joined_at` timestamp NULL DEFAULT current_timestamp(), + PRIMARY KEY (`channel_id`,`user_id`), + KEY `user_id` (`user_id`), + CONSTRAINT `channel_members_ibfk_1` FOREIGN KEY (`channel_id`) REFERENCES `channels` (`id`) ON DELETE CASCADE, + CONSTRAINT `channel_members_ibfk_2` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `channel_permissions` +-- + +DROP TABLE IF EXISTS `channel_permissions`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `channel_permissions` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `channel_id` int(11) NOT NULL, + `role_id` int(11) DEFAULT NULL, + `user_id` int(11) DEFAULT NULL, + `allow_permissions` int(11) DEFAULT 0, + `deny_permissions` int(11) DEFAULT 0, + `role_id_idx` int(11) GENERATED ALWAYS AS (ifnull(`role_id`,0)) VIRTUAL, + `user_id_idx` int(11) GENERATED ALWAYS AS (ifnull(`user_id`,0)) VIRTUAL, + PRIMARY KEY (`id`), + UNIQUE KEY `channel_role_user_fixed` (`channel_id`,`role_id_idx`,`user_id_idx`), + KEY `role_id` (`role_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `channel_rss_feeds` +-- + +DROP TABLE IF EXISTS `channel_rss_feeds`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `channel_rss_feeds` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `channel_id` int(11) NOT NULL, + `url` varchar(255) NOT NULL, + `last_fetched_at` timestamp NULL DEFAULT NULL, + `created_at` timestamp NULL DEFAULT current_timestamp(), + PRIMARY KEY (`id`), + KEY `channel_id` (`channel_id`), + CONSTRAINT `channel_rss_feeds_ibfk_1` FOREIGN KEY (`channel_id`) REFERENCES `channels` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `channel_rules` +-- + +DROP TABLE IF EXISTS `channel_rules`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `channel_rules` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `channel_id` int(11) NOT NULL, + `content` text NOT NULL, + `position` int(11) DEFAULT 0, + `created_at` timestamp NULL DEFAULT current_timestamp(), + PRIMARY KEY (`id`), + KEY `channel_id` (`channel_id`), + CONSTRAINT `channel_rules_ibfk_1` FOREIGN KEY (`channel_id`) REFERENCES `channels` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `channels` +-- + +DROP TABLE IF EXISTS `channels`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `channels` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `server_id` int(11) DEFAULT NULL, + `name` varchar(100) NOT NULL, + `type` varchar(50) DEFAULT 'chat', + `created_at` timestamp NULL DEFAULT current_timestamp(), + `allow_file_sharing` tinyint(1) DEFAULT 1, + `theme_color` varchar(20) DEFAULT NULL, + `message_limit` int(11) DEFAULT NULL, + `status` varchar(255) DEFAULT NULL, + `icon` varchar(50) DEFAULT NULL, + `position` int(11) DEFAULT 0, + `category_id` int(11) DEFAULT NULL, + `rules_role_id` int(11) DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `server_id` (`server_id`), + CONSTRAINT `channels_ibfk_1` FOREIGN KEY (`server_id`) REFERENCES `servers` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `custom_emotes` +-- + +DROP TABLE IF EXISTS `custom_emotes`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `custom_emotes` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `name` varchar(50) NOT NULL, + `path` varchar(255) NOT NULL, + `code` varchar(60) NOT NULL, + `created_at` timestamp NULL DEFAULT current_timestamp(), + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `forum_tags` +-- + +DROP TABLE IF EXISTS `forum_tags`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `forum_tags` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `channel_id` int(11) NOT NULL, + `name` varchar(50) NOT NULL, + `color` varchar(20) DEFAULT '#7289da', + PRIMARY KEY (`id`), + KEY `channel_id` (`channel_id`), + CONSTRAINT `forum_tags_ibfk_1` FOREIGN KEY (`channel_id`) REFERENCES `channels` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `forum_threads` +-- + +DROP TABLE IF EXISTS `forum_threads`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `forum_threads` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `channel_id` int(11) NOT NULL, + `user_id` int(11) NOT NULL, + `title` varchar(255) NOT NULL, + `created_at` timestamp NULL DEFAULT current_timestamp(), + `solution_message_id` int(11) DEFAULT NULL, + `is_pinned` tinyint(1) NOT NULL DEFAULT 0, + `is_locked` tinyint(1) NOT NULL DEFAULT 0, + `last_activity_at` timestamp NULL DEFAULT current_timestamp(), + PRIMARY KEY (`id`), + KEY `channel_id` (`channel_id`), + KEY `user_id` (`user_id`), + KEY `solution_message_id` (`solution_message_id`), + CONSTRAINT `forum_threads_ibfk_1` FOREIGN KEY (`channel_id`) REFERENCES `channels` (`id`) ON DELETE CASCADE, + CONSTRAINT `forum_threads_ibfk_2` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE, + CONSTRAINT `forum_threads_ibfk_3` FOREIGN KEY (`solution_message_id`) REFERENCES `messages` (`id`) ON DELETE SET NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `message_reactions` +-- + +DROP TABLE IF EXISTS `message_reactions`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `message_reactions` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `message_id` int(11) NOT NULL, + `user_id` int(11) NOT NULL, + `emoji` varchar(50) NOT NULL, + `created_at` timestamp NULL DEFAULT current_timestamp(), + PRIMARY KEY (`id`), + UNIQUE KEY `message_id` (`message_id`,`user_id`,`emoji`), + KEY `user_id` (`user_id`), + CONSTRAINT `message_reactions_ibfk_1` FOREIGN KEY (`message_id`) REFERENCES `messages` (`id`) ON DELETE CASCADE, + CONSTRAINT `message_reactions_ibfk_2` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `messages` +-- + +DROP TABLE IF EXISTS `messages`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `messages` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `channel_id` int(11) NOT NULL, + `user_id` int(11) NOT NULL, + `content` text NOT NULL, + `attachment_url` varchar(255) DEFAULT NULL, + `created_at` timestamp NULL DEFAULT current_timestamp(), + `updated_at` timestamp NULL DEFAULT NULL ON UPDATE current_timestamp(), + `metadata` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`metadata`)), + `is_pinned` tinyint(1) DEFAULT 0, + `thread_id` int(11) DEFAULT NULL, + `rss_guid` varchar(255) DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `channel_id` (`channel_id`), + KEY `user_id` (`user_id`), + KEY `fk_thread` (`thread_id`), + KEY `idx_rss_guid` (`rss_guid`), + CONSTRAINT `fk_thread` FOREIGN KEY (`thread_id`) REFERENCES `forum_threads` (`id`) ON DELETE CASCADE, + CONSTRAINT `messages_ibfk_1` FOREIGN KEY (`channel_id`) REFERENCES `channels` (`id`) ON DELETE CASCADE, + CONSTRAINT `messages_ibfk_2` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `roles` +-- + +DROP TABLE IF EXISTS `roles`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `roles` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `server_id` int(11) NOT NULL, + `name` varchar(50) NOT NULL, + `color` varchar(7) DEFAULT '#99aab5', + `permissions` int(11) DEFAULT 0, + `position` int(11) DEFAULT 0, + `icon_url` varchar(255) DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `server_id` (`server_id`), + CONSTRAINT `roles_ibfk_1` FOREIGN KEY (`server_id`) REFERENCES `servers` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `rss_processed_items` +-- + +DROP TABLE IF EXISTS `rss_processed_items`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `rss_processed_items` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `channel_id` int(11) NOT NULL, + `rss_guid` varchar(255) NOT NULL, + `created_at` timestamp NULL DEFAULT current_timestamp(), + PRIMARY KEY (`id`), + UNIQUE KEY `idx_channel_guid` (`channel_id`,`rss_guid`), + CONSTRAINT `rss_processed_items_ibfk_1` FOREIGN KEY (`channel_id`) REFERENCES `channels` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `rule_acceptances` +-- + +DROP TABLE IF EXISTS `rule_acceptances`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `rule_acceptances` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `user_id` int(11) NOT NULL, + `channel_id` int(11) NOT NULL, + `accepted_at` timestamp NULL DEFAULT current_timestamp(), + PRIMARY KEY (`id`), + UNIQUE KEY `user_channel` (`user_id`,`channel_id`), + KEY `channel_id` (`channel_id`), + CONSTRAINT `rule_acceptances_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE, + CONSTRAINT `rule_acceptances_ibfk_2` FOREIGN KEY (`channel_id`) REFERENCES `channels` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `server_members` +-- + +DROP TABLE IF EXISTS `server_members`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `server_members` ( + `server_id` int(11) NOT NULL, + `user_id` int(11) NOT NULL, + `joined_at` timestamp NULL DEFAULT current_timestamp(), + PRIMARY KEY (`server_id`,`user_id`), + KEY `user_id` (`user_id`), + CONSTRAINT `server_members_ibfk_1` FOREIGN KEY (`server_id`) REFERENCES `servers` (`id`) ON DELETE CASCADE, + CONSTRAINT `server_members_ibfk_2` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `servers` +-- + +DROP TABLE IF EXISTS `servers`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `servers` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `name` varchar(100) NOT NULL, + `owner_id` int(11) NOT NULL, + `icon_url` varchar(255) DEFAULT NULL, + `invite_code` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL, + `created_at` timestamp NULL DEFAULT current_timestamp(), + `theme_color` varchar(20) DEFAULT NULL, + `invite_code_expires_at` datetime DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `invite_code` (`invite_code`), + UNIQUE KEY `invite_code_2` (`invite_code`), + KEY `owner_id` (`owner_id`), + CONSTRAINT `servers_ibfk_1` FOREIGN KEY (`owner_id`) REFERENCES `users` (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `thread_tags` +-- + +DROP TABLE IF EXISTS `thread_tags`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `thread_tags` ( + `thread_id` int(11) NOT NULL, + `tag_id` int(11) NOT NULL, + PRIMARY KEY (`thread_id`,`tag_id`), + KEY `tag_id` (`tag_id`), + CONSTRAINT `thread_tags_ibfk_1` FOREIGN KEY (`thread_id`) REFERENCES `forum_threads` (`id`) ON DELETE CASCADE, + CONSTRAINT `thread_tags_ibfk_2` FOREIGN KEY (`tag_id`) REFERENCES `forum_tags` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `user_roles` +-- + +DROP TABLE IF EXISTS `user_roles`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `user_roles` ( + `user_id` int(11) NOT NULL, + `role_id` int(11) NOT NULL, + PRIMARY KEY (`user_id`,`role_id`), + KEY `role_id` (`role_id`), + CONSTRAINT `user_roles_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE, + CONSTRAINT `user_roles_ibfk_2` FOREIGN KEY (`role_id`) REFERENCES `roles` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `users` +-- + +DROP TABLE IF EXISTS `users`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `users` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `username` varchar(50) NOT NULL, + `display_name` varchar(50) DEFAULT NULL, + `email` varchar(100) NOT NULL, + `password_hash` varchar(255) NOT NULL, + `avatar_url` varchar(255) DEFAULT NULL, + `status` varchar(20) DEFAULT 'offline', + `created_at` timestamp NULL DEFAULT current_timestamp(), + `is_bot` tinyint(1) DEFAULT 0, + `bot_token` varchar(64) DEFAULT NULL, + `dnd_mode` tinyint(1) DEFAULT 0, + `theme` varchar(20) DEFAULT 'dark', + `sound_notifications` tinyint(1) DEFAULT 0, + `is_admin` tinyint(1) DEFAULT 0, + `voice_mode` enum('vox','ptt') DEFAULT 'vox', + `voice_ptt_key` varchar(20) DEFAULT 'v', + `voice_vox_threshold` float DEFAULT 0.1, + `voice_echo_cancellation` tinyint(1) DEFAULT 1, + `voice_noise_suppression` tinyint(1) DEFAULT 1, + PRIMARY KEY (`id`), + UNIQUE KEY `username` (`username`), + UNIQUE KEY `email` (`email`), + UNIQUE KEY `bot_token` (`bot_token`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `voice_sessions` +-- + +DROP TABLE IF EXISTS `voice_sessions`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `voice_sessions` ( + `user_id` int(11) NOT NULL, + `channel_id` int(11) NOT NULL, + `joined_at` timestamp NULL DEFAULT current_timestamp(), + `last_seen` bigint(20) DEFAULT 0, + `peer_id` varchar(16) NOT NULL, + `name` varchar(50) DEFAULT NULL, + `is_muted` tinyint(1) DEFAULT 0, + `is_deafened` tinyint(1) DEFAULT 0, + PRIMARY KEY (`user_id`), + KEY `channel_id` (`channel_id`), + CONSTRAINT `voice_sessions_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE, + CONSTRAINT `voice_sessions_ibfk_2` FOREIGN KEY (`channel_id`) REFERENCES `channels` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `voice_signals` +-- + +DROP TABLE IF EXISTS `voice_signals`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `voice_signals` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `room_id` varchar(50) NOT NULL, + `from_peer_id` varchar(16) NOT NULL, + `to_peer_id` varchar(16) NOT NULL, + `data` text NOT NULL, + `created_at_ms` bigint(20) NOT NULL, + PRIMARY KEY (`id`), + KEY `to_peer_id` (`to_peer_id`), + KEY `room_id` (`room_id`), + KEY `created_at` (`created_at_ms`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `voice_whispers` +-- + +DROP TABLE IF EXISTS `voice_whispers`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `voice_whispers` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `user_id` int(11) NOT NULL, + `target_type` enum('user','channel') NOT NULL, + `target_id` int(11) NOT NULL, + `whisper_key` varchar(50) NOT NULL, + `created_at` timestamp NULL DEFAULT current_timestamp(), + PRIMARY KEY (`id`), + UNIQUE KEY `user_id` (`user_id`,`whisper_key`), + CONSTRAINT `voice_whispers_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `webhooks` +-- + +DROP TABLE IF EXISTS `webhooks`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `webhooks` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `name` varchar(100) NOT NULL, + `token` varchar(64) NOT NULL, + `channel_id` int(11) NOT NULL, + `created_at` timestamp NULL DEFAULT current_timestamp(), + PRIMARY KEY (`id`), + UNIQUE KEY `token` (`token`), + KEY `channel_id` (`channel_id`), + CONSTRAINT `webhooks_ibfk_1` FOREIGN KEY (`channel_id`) REFERENCES `channels` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; + +/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; +/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; +/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; +/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; +/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; +/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; +/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; -- Seed initial data -INSERT IGNORE INTO users (id, username, email, password_hash, status) VALUES -(1, 'System', 'system@local', '$2y$10$xyz', 'online'); +INSERT INTO `users` (id, username, display_name, email, password_hash, status, is_admin) VALUES +(1, 'System', 'System Bot', 'system@local', '$2y$10$4DDos6MKhMCbsvw1Yquuj.o0NwWCRlbgy85QCmGIJV6GlL8QC4cWW', 'online', 1); -INSERT IGNORE INTO servers (id, name, owner_id, invite_code) VALUES +INSERT INTO `servers` (id, name, owner_id, invite_code) VALUES (1, 'General Community', 1, 'GEN-123'), (2, 'Flatlogic Devs', 1, 'DEV-456'); -INSERT IGNORE INTO server_members (server_id, user_id) VALUES (1, 1), (2, 1); +INSERT INTO `server_members` (server_id, user_id) VALUES (1, 1), (2, 1); -INSERT IGNORE INTO channels (id, server_id, name, type) VALUES -(1, 1, 'general', 'text'), -(2, 1, 'random', 'text'), +INSERT INTO `channels` (id, server_id, name, type) VALUES +(1, 1, 'general', 'chat'), +(2, 1, 'random', 'chat'), (3, 1, 'Voice General', 'voice'), -(4, 2, 'announcements', 'text'), -(5, 2, 'coding-help', 'text'); +(4, 2, 'announcements', 'chat'), +(5, 2, 'coding-help', 'chat'); + +-- Dump completed on 2026-02-19 16:49:04