Skip to content
Snippets Groups Projects

[#6] Schedule 컨트롤러, 라우터, 로직 개발

Merged [#6] Schedule 컨트롤러, 라우터, 로직 개발
Merged 조대희 requested to merge feature/#6 into develop
6 files
+ 271
13
Compare changes
  • Side-by-side
  • Inline
Files
6
 
const ScheduleService = require('../services/scheduleService');
 
 
class scheduleController {
 
/**
 
* 스케줄 생성
 
* POST /api/schedule
 
* 해당 사용자 id는 auth 미들웨어에서 설정된 사용자 정보 이용
 
* req.user = User 모델의 인스턴스
 
*/
 
async createSchedule(req, res) {
 
try {
 
const userId = req.user.id;
 
const { title, start_time, end_time, is_fixed } = req.body;
 
 
const schedule = await ScheduleService.createSchedule({
 
userId,
 
title,
 
start_time,
 
end_time,
 
is_fixed
 
});
 
 
return res.status(201).json({
 
success: true,
 
data: {
 
schedule
 
}
 
});
 
} catch (error) {
 
return res.status(400).json({
 
success: false,
 
error: {
 
message: error.message,
 
code: 'SCHEDULE_CREATE_ERROR'
 
}
 
});
 
}
 
}
 
 
/**
 
* 스케줄 수정
 
* PUT /api/schedule/:id
 
*/
 
async updateSchedule(req, res) {
 
try {
 
const { id } = req.params;
 
const { title, start_time, end_time } = req.body;
 
 
const userId = req.user.id;
 
const schedule = await ScheduleService.updateSchedule(id, userId,
 
{
 
title,
 
start_time,
 
end_time
 
});
 
 
return res.status(200).json({
 
success: true,
 
data: schedule
 
});
 
} catch (error) {
 
if (error.message === 'Schedule not found') {
 
return res.status(404).json({
 
success: false,
 
error: {
 
message: error.message,
 
code: 'SCHEDULE_NOT_FOUND'
 
}
 
});
 
}
 
return res.status(400).json({
 
success: false,
 
error: {
 
message: error.message,
 
code: 'SCHEDULE_UPDATE_ERROR'
 
}
 
});
 
}
 
}
 
 
/**
 
* 스케줄 삭제
 
* DELETE /api/schedule/:id
 
*/
 
async deleteSchedule(req, res) {
 
try {
 
const { id } = req.params;
 
const userId = req.user.id;
 
 
await ScheduleService.deleteSchedule(id, userId);
 
 
return res.status(200).json({
 
success: true,
 
data: {
 
message: 'Schedule successfully deleted'
 
}
 
});
 
} catch (error) {
 
return res.status(404).json({
 
success: false,
 
error: {
 
message: error.message,
 
code: 'SCHEDULE_NOT_FOUND'
 
}
 
});
 
}
 
}
 
 
/**
 
* 해당 사용자 전체 스케줄 조회
 
* GET /api/schedule/all
 
*/
 
async getAllSchedules(req, res) {
 
try {
 
const userId = req.user.id;
 
const schedules = await ScheduleService.getAllSchedules(userId);
 
 
return res.status(200).json({
 
success: true,
 
data: schedules
 
});
 
} catch (error) {
 
return res.status(500).json({
 
success: false,
 
error: {
 
message: 'Failed to fetch schedules',
 
code: 'FETCH_ERROR'
 
}
 
});
 
}
 
}
 
 
/**
 
* 해당 사용자 특정 스케줄 조회
 
* GET /api/schedule/:id
 
*/
 
async getScheduleById(req, res) {
 
try {
 
const { id } = req.params;
 
const userId = req.user.id;
 
const schedule = await ScheduleService.getScheduleById(id, userId);
 
 
return res.status(200).json({
 
success: true,
 
data: schedule
 
});
 
} catch (error) {
 
if (error.message === 'Schedule not found') {
 
return res.status(404).json({
 
success: false,
 
error: {
 
message: error.message,
 
code: 'SCHEDULE_NOT_FOUND'
 
}
 
});
 
}
 
 
return res.status(500).json({
 
success: false,
 
error: {
 
message: 'Failed to fetch schedule',
 
code: 'FETCH_ERROR'
 
}
 
});
 
}
 
}
 
}
 
 
module.exports = new scheduleController();
 
\ No newline at end of file
Loading