Skip to content
Snippets Groups Projects

미팅방 서비스 관련 검증 로직 보강 및 트랜잭션 적용

Merged 세현 임 requested to merge feature/#12 into develop
5 files
+ 355
209
Compare changes
  • Side-by-side
  • Inline
Files
5
 
// controllers/meetingController.js
 
const MeetingService = require('../services/meetingService');
const MeetingService = require('../services/meetingService');
 
const CreateMeetingRequestDTO = require('../dtos/CreateMeetingRequestDTO');
class MeetingController {
class MeetingController {
 
/**
 
* 번개 모임 생성
 
* POST /api/meetings
 
*/
async createMeeting(req, res) {
async createMeeting(req, res) {
try {
try {
const result = await MeetingService.createMeeting(req.body);
const userId = req.userId; // 인증 미들웨어를 통해 설정된 사용자 ID
 
const meetingData = { ...req.body, created_by: userId };
 
 
// CreateMeetingRequestDTO를 사용하여 요청 데이터 검증
 
const createMeetingDTO = new CreateMeetingRequestDTO(meetingData);
 
createMeetingDTO.validate();
 
 
const result = await MeetingService.createMeeting(meetingData);
res.status(201).json(result);
res.status(201).json(result);
} catch (err) {
} catch (err) {
console.error('번개 모임 생성 오류:', err);
console.error('번개 모임 생성 오류:', err);
@@ -11,14 +25,14 @@ class MeetingController {
@@ -11,14 +25,14 @@ class MeetingController {
}
}
}
}
 
/**
 
* 번개 모임 목록 조회
 
* GET /api/meetings
 
*/
async getMeetings(req, res) {
async getMeetings(req, res) {
const { userId } = req.query;
if (!userId) {
return res.status(400).json({ error: '사용자 ID가 필요합니다.' });
}
try {
try {
 
const userId = req.userId; // 인증 미들웨어를 통해 설정된 사용자 ID
 
const meetings = await MeetingService.getMeetings(userId);
const meetings = await MeetingService.getMeetings(userId);
res.status(200).json(meetings);
res.status(200).json(meetings);
} catch (err) {
} catch (err) {
@@ -27,6 +41,10 @@ class MeetingController {
@@ -27,6 +41,10 @@ class MeetingController {
}
}
}
}
 
/**
 
* 번개 모임 마감
 
* PATCH /api/meetings/:meetingId/close
 
*/
async closeMeeting(req, res) {
async closeMeeting(req, res) {
const { meetingId } = req.params;
const { meetingId } = req.params;
@@ -39,12 +57,16 @@ class MeetingController {
@@ -39,12 +57,16 @@ class MeetingController {
}
}
}
}
 
/**
 
* 번개 모임 참가
 
* POST /api/meetings/:meetingId/join
 
*/
async joinMeeting(req, res) {
async joinMeeting(req, res) {
 
try {
const { meetingId } = req.params;
const { meetingId } = req.params;
const { user_id } = req.body;
const userId = req.userId; // 인증 미들웨어를 통해 설정된 사용자 ID
try {
await MeetingService.joinMeeting(meetingId, userId);
await MeetingService.joinMeeting(meetingId, user_id);
res.status(200).json({ message: '모임 및 채팅방 참가 완료' });
res.status(200).json({ message: '모임 및 채팅방 참가 완료' });
} catch (err) {
} catch (err) {
console.error('모임 참가 오류:', err);
console.error('모임 참가 오류:', err);
@@ -52,6 +74,10 @@ class MeetingController {
@@ -52,6 +74,10 @@ class MeetingController {
}
}
}
}
 
/**
 
* 번개 모임 상세 조회
 
* GET /api/meetings/:meetingId
 
*/
async getMeetingDetail(req, res) {
async getMeetingDetail(req, res) {
const { meetingId } = req.params;
const { meetingId } = req.params;
Loading