From 82f600bca8c9e8c950d6fe7307cb3daa5d9e75ff Mon Sep 17 00:00:00 2001
From: tpgus2603 <kakaneymar2424@gmail.com>
Date: Mon, 25 Nov 2024 01:53:25 +0900
Subject: [PATCH] =?UTF-8?q?feature:=20=EC=B4=88=EB=8C=80=20=EA=B4=80?=
 =?UTF-8?q?=EB=A0=A8=20=EC=84=9C=EB=B9=84=EC=8A=A4=EB=A1=9C=EC=A7=81,?=
 =?UTF-8?q?=EB=9D=BC=EC=9A=B0=ED=84=B0,=EC=BB=A8=ED=8A=B8=EB=A1=A4?=
 =?UTF-8?q?=EB=9F=AC=20=EC=B6=94=EA=B0=80(#16)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 controllers/inviteController.js |  0
 routes/inviteRoutes.js          | 32 +++++++++++++++++++++++++
 services/meetingService.js      | 41 +++++----------------------------
 3 files changed, 38 insertions(+), 35 deletions(-)
 create mode 100644 controllers/inviteController.js
 create mode 100644 routes/inviteRoutes.js

diff --git a/controllers/inviteController.js b/controllers/inviteController.js
new file mode 100644
index 0000000..e69de29
diff --git a/routes/inviteRoutes.js b/routes/inviteRoutes.js
new file mode 100644
index 0000000..cef8ad9
--- /dev/null
+++ b/routes/inviteRoutes.js
@@ -0,0 +1,32 @@
+// routes/inviteRoutes.js
+const express = require('express');
+const router = express.Router();
+const inviteController = require('../controllers/inviteController');
+const { isLoggedIn } = require('../middlewares/auth');
+
+
+router.use(isLoggedIn);
+// 초대 응답
+router.post('/respond', async (req, res) => {
+    const { inviteId, response } = req.body;
+    const userId = req.user.id; // 인증된 사용자 ID
+    try {
+        const result = await inviteController.respondToInvite(inviteId, userId, response);
+        res.status(200).json({ success: true, result });
+    } catch (error) {
+        res.status(400).json({ success: false, message: error.message });
+    }
+});
+
+// 받은 초대 조회
+router.get('/received', async (req, res) => {
+    const userId = req.user.id; // 인증된 사용자 ID
+    try {
+        const invites = await inviteController.getReceivedInvites(userId);
+        res.status(200).json({ success: true, invites });
+    } catch (error) {
+        res.status(400).json({ success: false, message: error.message });
+    }
+});
+
+module.exports = router;
diff --git a/services/meetingService.js b/services/meetingService.js
index 44ed519..389942d 100644
--- a/services/meetingService.js
+++ b/services/meetingService.js
@@ -26,11 +26,6 @@ class MeetingService {
         return totalIdx;
     }
 
-    /**
-     * 번개 모임 생성
-     * @param {object} meetingData - 모임 생성 데이터
-     * @returns {Promise<object>} - 생성된 모임 ID와 채팅방 ID, 초대된 친구 ID 목록
-     */
     async createMeeting(meetingData) {
         // DTO를 사용하여 요청 데이터 검증
         const createMeetingDTO = new CreateMeetingRequestDTO(meetingData);
@@ -179,12 +174,7 @@ class MeetingService {
         return availableFriendIds;
     }
 
-    /**
-     * 번개 모임 참가
-     * @param {number} meetingId - 모임 ID
-     * @param {number} userId - 사용자 ID
-     * @returns {Promise<void>}
-     */
+  
     async joinMeeting(meetingId, userId) {
         const meeting = await Meeting.findByPk(meetingId);
         console.log(`참여하려는 모임: ${JSON.stringify(meeting)}`);
@@ -209,7 +199,6 @@ class MeetingService {
 
         // 트랜잭션을 사용하여 참가자 추가 및 스케줄 업데이트를 원자적으로 처리
         await sequelize.transaction(async (transaction) => {
-          // 현재 인원 수 확인
           if (meeting.cur_num >= meeting.max_num) {
             throw new Error("모임 인원이 모두 찼습니다.");
           }
@@ -225,7 +214,6 @@ class MeetingService {
             throw new Error("스케줄이 겹칩니다. 다른 모임에 참가하세요.");
           }
 
-          // 참가자 추가
           await MeetingParticipant.create(
             { meeting_id: meetingId, user_id: userId },
             { transaction }
@@ -271,11 +259,7 @@ class MeetingService {
         });
     }
 
-    /**
-     * 번개 모임 목록 조회
-     * @param {number} userId - 사용자 ID
-     * @returns {Promise<Array<MeetingResponseDTO>>} - 모임 목록 DTO 배열
-     */
+    
     async getMeetings(userId) {
         const meetings = await Meeting.findAll({
             attributes: [
@@ -295,7 +279,7 @@ class MeetingService {
                     model: MeetingParticipant,
                     as: 'participants',
                     where: { user_id: userId }, // userId와 매핑된 미팅만 가져옴
-                    attributes: [], // MeetingParticipant 테이블의 데이터는 필요 없으므로 제외
+                    attributes: [], 
                 },
                 {
                     model: User,
@@ -311,11 +295,7 @@ class MeetingService {
         });
     }
 
-    /**
-     * 번개 모임 마감
-     * @param {number} meetingId - 모임 ID
-     * @returns {Promise<Meeting>} - 마감된 모임 객체
-     */
+  
     async closeMeeting(meetingId) {
         const meeting = await Meeting.findByPk(meetingId);
         if (!meeting) {
@@ -329,12 +309,7 @@ class MeetingService {
         return meeting;
     }
 
-    /**
-     * 번개 모임 참가
-     * @param {number} meetingId - 모임 ID
-     * @param {number} userId - 사용자 ID
-     * @returns {Promise<void>}
-     */
+  
     async joinMeeting(meetingId, userId) {
         const meeting = await Meeting.findByPk(meetingId);
         console.log(`참여하려는 모임: ${JSON.stringify(meeting)}`);
@@ -422,11 +397,7 @@ class MeetingService {
         });
     }
 
-    /**
-     * 번개 모임 상세 조회
-     * @param {number} meetingId - 모임 ID
-     * @returns {Promise<MeetingDetailResponseDTO>} - 모임 상세 DTO
-     */
+    
     async getMeetingDetail(meetingId) {
         const meeting = await Meeting.findByPk(meetingId, {
             include: [
-- 
GitLab