팀 프로젝트에서 내가 맡은 부분은 리뷰 작성 페이지.
처음에는 API 명세대로 POST만 작성하려고 했는데 리뷰 수정과 삭제도 있어야 할 거 같았다.
수정과 삭제 API도 함께 만들었다. 그런데 리뷰 수정이라는 기능이 꼭 필요한가 싶었다.
그래서 과감히 수정 기능은 삭제하고 POST와 DELETE 기능만 남겼다.
// 리뷰 작성
router.post('/:request_id', authMiddleware.auth_middleware, async (req, res) => {
const { user_id } = res.locals.user;
const { review, star } = req.body;
const { request_id } = req.params;
const request = await request_status.findByPk(request_id);
const newRequest = await review.create({
review: review,
star: star,
customer_id: user_id,
provider_id: request.provider_id,
photo: ult_raw.cast_to_raw('This is a blob description')
})
return res.status(200).json({message:'리뷰 작성을 완료했습니다.'})
})
// 리뷰 삭제
router.delete('/:review_id', authMiddleware.auth_middleware, async (req, res) => {
const { review_id } = req.params;
const { user_id } = res.locals.user;
const deleteReview = await review.findByPk({ review_id });
// review_id에 해당하는 리뷰 글이 없는 경우 에러 메세지
if (!deleteReview) {
return res.status(404).json({
errorMessage: '리뷰글을 찾지 못했습니다.'
});
}
// 리뷰 글은 존재하나 작성자 본인이 아닌 경우
if (user_id !== deleteReview.customer_id) {
return res.status(401).json({
errorMessage: '작성자 본인만 삭제 가능합니다.'
});
}
// 작성자 본인이 맞는 경우, 삭제 진행
await deleteReview.destroy();
return res.status(200).json({
message: '리뷰를 삭제하였습니다.'
})
})
CRUD에 집중하다보니 꼭 필요하지 않은 부분에도 필요처럼 느껴지게 되는게 필요하지 않을 때는 과감하게 버릴 것.