38443-vm/database/schema.sql
Flatlogic Bot 2642f97c8b v1
2026-02-15 10:25:49 +00:00

51 lines
1.6 KiB
SQL

-- 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',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
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)
);
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
);
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)
);
-- Seed initial data
INSERT IGNORE INTO users (id, username, email, password_hash, status) VALUES
(1, 'System', 'system@local', '$2y$10$xyz', 'online');
INSERT IGNORE INTO servers (id, name, owner_id, invite_code) VALUES
(1, 'General Community', 1, 'GEN-123');
INSERT IGNORE INTO channels (id, server_id, name) VALUES
(1, 1, 'general'),
(2, 1, 'random');