From 96421e2ea2d6734f3762f07fc7abbfbbbf996d04 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=EC=A1=B0=EB=8C=80=ED=9D=AC?= <joedaehui@ajou.ac.kr>
Date: Sat, 7 Dec 2024 13:34:56 +0900
Subject: [PATCH] =?UTF-8?q?feat:=20=EB=AA=A8=EC=9E=84=20=ED=83=88=ED=87=B4?=
 =?UTF-8?q?=20=EC=BB=A8=ED=8A=B8=EB=A1=A4=EB=9D=BC,=20=EB=9D=BC=EC=9A=B0?=
 =?UTF-8?q?=ED=8A=B8,=20=EC=84=9C=EB=B9=84=EC=8A=A4=20=EC=B6=94=EA=B0=80?=
 =?UTF-8?q?=20(#23)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 controllers/meetingController.js | 23 ++++++++++++-----------
 routes/meetingRoute.js           |  7 +++++--
 services/meetingService.js       |  5 ++++-
 3 files changed, 21 insertions(+), 14 deletions(-)

diff --git a/controllers/meetingController.js b/controllers/meetingController.js
index 6624622..9642db6 100644
--- a/controllers/meetingController.js
+++ b/controllers/meetingController.js
@@ -116,20 +116,21 @@ class MeetingController {
             res.status(500).json({ error: err.message || '모임 상세 조회 실패' });
         }
     }
-    /*
-    Delete /api/meetings/:meetingId
-    */
-    async closeMeeting(req,res)
-    {
-    
+
+    /**
+     * 번개 모임 탈퇴
+     * DELETE /api/meeting/:meetingId/leave
+     */
+    async leaveMeeting(req, res) {
         const { meetingId } = req.params;
-        const userid=req.user.id;  
+        const userId = req.user.id;
+        
         try {
-            const meetingDetail = await MeetingService.leaveMeeting(meetingId,userId);
-            res.status(200).json('모임 삭제성공!');
+            await MeetingService.leaveMeeting(meetingId, userId);
+            res.status(200).json({ message: '모임 탈퇴 성공' }); 
         } catch (err) {
-            console.error('모임 삭제 오류', err);
-            res.status(500).json({ error: err.message || '모임삭제 실패' });
+            console.error('모임 탈퇴 오류:', err);
+            res.status(500).json({ error: err.message || '모임 탈퇴 실패' });
         }
     }
 
diff --git a/routes/meetingRoute.js b/routes/meetingRoute.js
index a2788ca..af2ac33 100644
--- a/routes/meetingRoute.js
+++ b/routes/meetingRoute.js
@@ -2,10 +2,10 @@
 
 const express = require('express');
 const router = express.Router();
-const { isLoggedIn } = require('../middlewares/auth');
+// const { isLoggedIn } = require('../middlewares/auth');
 const MeetingController = require('../controllers/meetingController');
 
-router.use(isLoggedIn);
+// router.use(isLoggedIn);
 
 // 번개 모임 생성
 router.post('/', MeetingController.createMeeting);
@@ -22,4 +22,7 @@ router.post('/:meetingId/join', MeetingController.joinMeeting);
 // 번개 모임 상세 조회
 router.get('/:meetingId', MeetingController.getMeetingDetail);
 
+// 번개 모임 탈퇴
+router.delete('/:meetingId/leave', MeetingController.leaveMeeting);
+
 module.exports = router;
\ No newline at end of file
diff --git a/services/meetingService.js b/services/meetingService.js
index 746597d..746bcf1 100644
--- a/services/meetingService.js
+++ b/services/meetingService.js
@@ -598,7 +598,10 @@ class MeetingService {
             });
             if (chatRoom) {
                 const user = await User.findByPk(userId);
-                chatRoom.participants = chatRoom.participants.filter(p => p !== user.name);
+                chatRoom.participants = chatRoom.participants.filter(p => p.name !== user.name);
+                chatRoom.isOnline.delete(user.name);
+                chatRoom.lastReadAt.delete(user.name);
+                chatRoom.lastReadLogId.delete(user.name);
                 await chatRoom.save();
             }
     
-- 
GitLab