From 05dd75fa74170932fb116bcc433f2d9c4e08f6cf Mon Sep 17 00:00:00 2001 From: Lukian Date: Mon, 28 Apr 2025 11:12:07 +0200 Subject: [PATCH] add: added constraints do the db and removed useless db deletions --- back/api/channels.js | 3 -- back/api/users.js | 2 - back/forum.sql | 121 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 121 insertions(+), 5 deletions(-) create mode 100644 back/forum.sql diff --git a/back/api/channels.js b/back/api/channels.js index 5de87fa..803534a 100644 --- a/back/api/channels.js +++ b/back/api/channels.js @@ -100,8 +100,6 @@ router.post('/:name/delete', async (req, res) => { return res.status(401).send({ error: 'Unauthorized' }); } - await deleteChannelMentions(connection, channel[0].id); - await deleteChannelMessages(connection, channel[0].id); await deleteChannel(connection, channel[0].id); connection.end(); @@ -206,7 +204,6 @@ router.post('/:name/messages/delete', checkAuth, async (req, res) => { } await deleteMessage(connection, message_id); - await deleMentions(connection, message_id); connection.end(); req.sockets.emit({ diff --git a/back/api/users.js b/back/api/users.js index e7c9047..457653e 100644 --- a/back/api/users.js +++ b/back/api/users.js @@ -84,8 +84,6 @@ router.post('/:username/delete', checkAuth, async (req, res) => { fs.unlinkSync(path.join(__dirname, `../data/pfps/${userToDelete[0].pfp}`)); } - await deleteUserMentions(connection, userToDelete[0].id); - await deleteUserMessages(connection, userToDelete[0].id); await deleteUser(connection, userToDelete[0].id); connection.end(); diff --git a/back/forum.sql b/back/forum.sql new file mode 100644 index 0000000..6d7936d --- /dev/null +++ b/back/forum.sql @@ -0,0 +1,121 @@ +-- phpMyAdmin SQL Dump +-- version 5.2.1 +-- https://www.phpmyadmin.net/ +-- +-- Host: mysql +-- Generation Time: Apr 28, 2025 at 09:07 AM +-- Server version: 10.11.3-MariaDB-1:10.11.3+maria~ubu2204 +-- PHP Version: 8.1.19 + +SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; +START TRANSACTION; +SET time_zone = "+00:00"; + + +/*!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 */; + +-- +-- Database: `forum` +-- +CREATE DATABASE IF NOT EXISTS `forum` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; +USE `forum`; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `channels` +-- + +CREATE TABLE IF NOT EXISTS `channels` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `name` varchar(30) NOT NULL, + `description` text NOT NULL, + `owner_id` int(11) NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `emojis` +-- + +CREATE TABLE IF NOT EXISTS `emojis` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `name` varchar(20) NOT NULL, + `file` varchar(60) NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `mentions` +-- + +CREATE TABLE IF NOT EXISTS `mentions` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `message_id` int(11) NOT NULL, + `user_id` int(11) NOT NULL, + PRIMARY KEY (`id`), + KEY `mention_user_id` (`user_id`), + KEY `mention_message_id` (`message_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `messages` +-- + +CREATE TABLE IF NOT EXISTS `messages` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `channel_id` int(11) NOT NULL, + `user_id` int(11) NOT NULL, + `content` text NOT NULL, + `date` int(11) NOT NULL, + PRIMARY KEY (`id`), + KEY `message_user_id` (`user_id`), + KEY `message_channel_id` (`channel_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `users` +-- + +CREATE TABLE IF NOT EXISTS `users` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `username` varchar(50) NOT NULL, + `password` varchar(100) NOT NULL, + `pfp` varchar(60) DEFAULT NULL, + `admin` tinyint(1) NOT NULL DEFAULT 0, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; + +-- +-- Constraints for dumped tables +-- + +-- +-- Constraints for table `mentions` +-- +ALTER TABLE `mentions` + ADD CONSTRAINT `mention_message_id` FOREIGN KEY (`message_id`) REFERENCES `messages` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, + ADD CONSTRAINT `mention_user_id` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE; + +-- +-- Constraints for table `messages` +-- +ALTER TABLE `messages` + ADD CONSTRAINT `message_channel_id` FOREIGN KEY (`channel_id`) REFERENCES `channels` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, + ADD CONSTRAINT `message_user_id` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE; +COMMIT; + +/*!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 */;