From 340ddd5d09e24c44fbae658b5f87a8fcdde3a1d9 Mon Sep 17 00:00:00 2001
From: Florine Lefebvre <florine.lefebvre.etu@univ-lille.fr>
Date: Fri, 28 Feb 2025 10:32:14 +0100
Subject: [PATCH] suppression de thread en cascade

---
 WEB-INF/src/controleur/ThreadController.java | 6 ++++++
 WEB-INF/vue/compte.jsp                       | 2 +-
 baseDeDonnee/init.sql                        | 5 ++---
 3 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/WEB-INF/src/controleur/ThreadController.java b/WEB-INF/src/controleur/ThreadController.java
index 75c8474..cb2dc5a 100644
--- a/WEB-INF/src/controleur/ThreadController.java
+++ b/WEB-INF/src/controleur/ThreadController.java
@@ -8,6 +8,7 @@ import jakarta.servlet.http.HttpServlet;
 import jakarta.servlet.http.HttpServletRequest;
 import jakarta.servlet.http.HttpServletResponse;
 import modele.dao.DaoFollower;
+import modele.dao.DaoThread;
 import modele.dto.Follower;
 
 @WebServlet("/thread")
@@ -23,6 +24,7 @@ public class ThreadController extends HttpServlet {
         String action = (String) req.getParameter("action");
         String vue;
         DaoFollower daoFollower = new DaoFollower();
+        DaoThread daoThread = new DaoThread();
         int idThread = Integer.parseInt(req.getParameter("id"));
         Follower follow = new Follower(username, idThread);
 
@@ -39,6 +41,10 @@ public class ThreadController extends HttpServlet {
                 daoFollower.delete(follow);
                 vue = "WEB-INF/vue/filsSuivis.jsp";
                 break;
+            case "delete":
+                daoThread.delete(idThread);
+                vue = "WEB-INF/vue/accueil.jsp";
+                break;
             default:
                 vue = "WEB-INF/vue/fils.jsp";
         }
diff --git a/WEB-INF/vue/compte.jsp b/WEB-INF/vue/compte.jsp
index 61a55c6..38af53a 100644
--- a/WEB-INF/vue/compte.jsp
+++ b/WEB-INF/vue/compte.jsp
@@ -113,7 +113,7 @@
                                 </div>
                                 <div class="d-flex">
                                     <a class="me-3 align-self-center btn btn-primary" href="?chat=<%= thread.getId_thread() %>">Ouvrir <i class="bi-chat-fill"></i></a>
-                                    <a class="me-3 align-self-center btn btn-danger" href="?delete=<%= thread.getId_thread() %>">Supprimer <i class="bi-x-circle-fill"></i></a>
+                                    <a class="me-3 align-self-center btn btn-danger" href="thread?action=delete&id=<%= thread.getId_thread() %>">Supprimer <i class="bi-x-circle-fill"></i></a>
                                 </div>
                             </div>
                         </div>
diff --git a/baseDeDonnee/init.sql b/baseDeDonnee/init.sql
index fd16ee9..175faf8 100644
--- a/baseDeDonnee/init.sql
+++ b/baseDeDonnee/init.sql
@@ -1,6 +1,5 @@
 DROP TABLE IF EXISTS followers;
 DROP TABLE IF EXISTS messages;
-DROP TABLE IF EXISTS followers;
 DROP TABLE IF EXISTS threads;
 DROP TABLE IF EXISTS users;
 
@@ -26,7 +25,7 @@ CREATE TABLE followers (
     
     PRIMARY KEY (username, id_thread),
     FOREIGN KEY (username) REFERENCES users(username),
-    FOREIGN KEY (id_thread) REFERENCES threads(id_thread)
+    FOREIGN KEY (id_thread) REFERENCES threads(id_thread) ON DELETE CASCADE
 );
 
 CREATE TABLE messages (
@@ -37,6 +36,6 @@ CREATE TABLE messages (
     time        TIMESTAMP WITH TIME ZONE,
 
     FOREIGN KEY (sender) REFERENCES users(username),
-    FOREIGN KEY (id_thread) REFERENCES threads(id_thread)
+    FOREIGN KEY (id_thread) REFERENCES threads(id_thread) ON DELETE CASCADE
 );
 
-- 
GitLab