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