From 5b1f63035b82f9ec0d8ff93fdc787aa561ad0743 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:43:32 +0900
Subject: [PATCH] =?UTF-8?q?feat:=20=EB=82=B4=EA=B0=80=20=EC=B0=B8=EC=97=AC?=
 =?UTF-8?q?=ED=95=9C=20=EB=AF=B8=ED=8C=85=20=EC=A1=B0=ED=9A=8C=20=EC=BB=A8?=
 =?UTF-8?q?=ED=8A=B8=EB=A1=A4=EB=9F=AC,=20=EB=9D=BC=EC=9A=B0=ED=8A=B8=20?=
 =?UTF-8?q?=EC=B6=94=EA=B0=80=20(#23)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 controllers/meetingController.js | 35 ++++++++++++++++++++++++++++++--
 routes/meetingRoute.js           |  7 +++++--
 2 files changed, 38 insertions(+), 4 deletions(-)

diff --git a/controllers/meetingController.js b/controllers/meetingController.js
index 9642db6..78f4464 100644
--- a/controllers/meetingController.js
+++ b/controllers/meetingController.js
@@ -117,6 +117,37 @@ class MeetingController {
         }
     }
 
+    /**
+     * 내가 참여한 모임 목록 조회
+     * GET /api/meetings/my
+     */
+    async getMyMeetings(req, res) {
+        try {
+            const userId = req.user.id;
+            const page = parseInt(req.query.page) || 0;
+            const size = parseInt(req.query.size) || 20;
+
+            const meetings = await MeetingService.getMyMeetings(userId, {
+                limit: size,
+                offset: page * size
+            });
+
+            res.status(200).json({
+                success: true,
+                data: {
+                    content: meetings.content,
+                    page: page,
+                    size: size,
+                    hasNext: meetings.hasNext
+                }
+            });
+        } catch (err) {
+            console.error('내 모임 목록 조회 오류:', err);
+            res.status(500).json({ error: err.message || '내 모임 목록 조회 실패' });
+        }
+    }
+
+
     /**
      * 번개 모임 탈퇴
      * DELETE /api/meeting/:meetingId/leave
@@ -124,10 +155,10 @@ class MeetingController {
     async leaveMeeting(req, res) {
         const { meetingId } = req.params;
         const userId = req.user.id;
-        
+
         try {
             await MeetingService.leaveMeeting(meetingId, userId);
-            res.status(200).json({ message: '모임 탈퇴 성공' }); 
+            res.status(200).json({ message: '모임 탈퇴 성공' });
         } catch (err) {
             console.error('모임 탈퇴 오류:', err);
             res.status(500).json({ error: err.message || '모임 탈퇴 실패' });
diff --git a/routes/meetingRoute.js b/routes/meetingRoute.js
index af2ac33..9d2e26f 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);
@@ -25,4 +25,7 @@ router.get('/:meetingId', MeetingController.getMeetingDetail);
 // 번개 모임 탈퇴
 router.delete('/:meetingId/leave', MeetingController.leaveMeeting);
 
+// 내가 참여한 모임 목록 조회
+router.get('/my', MeetingController.getMyMeetings);
+
 module.exports = router;
\ No newline at end of file
-- 
GitLab