31 lines
1.1 KiB
SQL
31 lines
1.1 KiB
SQL
CREATE TABLE IF NOT EXISTS `messages` (
|
|
`id` INT AUTO_INCREMENT PRIMARY KEY,
|
|
`sender_id` INT NOT NULL,
|
|
`receiver_id` INT, -- For private messages
|
|
`group_id` INT, -- For group messages
|
|
`message` TEXT NOT NULL,
|
|
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
FOREIGN KEY (sender_id) REFERENCES users(id),
|
|
FOREIGN KEY (receiver_id) REFERENCES users(id)
|
|
-- FOREIGN KEY (group_id) REFERENCES chat_groups(id) -- This will be added later to avoid circular dependency
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS `chat_groups` (
|
|
`id` INT AUTO_INCREMENT PRIMARY KEY,
|
|
`name` VARCHAR(255) NOT NULL,
|
|
`creator_id` INT NOT NULL,
|
|
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
FOREIGN KEY (creator_id) REFERENCES users(id)
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS `chat_group_members` (
|
|
`id` INT AUTO_INCREMENT PRIMARY KEY,
|
|
`group_id` INT NOT NULL,
|
|
`user_id` INT NOT NULL,
|
|
`role` ENUM('member', 'admin') NOT NULL DEFAULT 'member',
|
|
FOREIGN KEY (group_id) REFERENCES chat_groups(id),
|
|
FOREIGN KEY (user_id) REFERENCES users(id)
|
|
);
|
|
|
|
ALTER TABLE `messages` ADD CONSTRAINT `fk_messages_group_id` FOREIGN KEY (`group_id`) REFERENCES `chat_groups`(`id`);
|