Skip to content

Commit

Permalink
[FEAT:#6] 리뷰 등록 기능 구현
Browse files Browse the repository at this point in the history
hyejungg committed May 25, 2022
1 parent 874bc43 commit f687a93
Showing 5 changed files with 48 additions and 0 deletions.
22 changes: 22 additions & 0 deletions src/controllers/ReviewController.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
import { Request, Response } from 'express';
import { validationResult } from 'express-validator';
import { ReviewCreateDto } from '../interfaces/review/ReviewCreateDto';
import message from '../modules/responseMessage';
import statusCode from '../modules/statusCode';
import util from '../modules/util';
@@ -17,6 +19,26 @@ const getReviewList = async (req: Request, res: Response): Promise<Response | vo
}
};

const createReview = async (req: Request, res: Response): Promise<Response | void> => {
const error = validationResult(req);
if (!error.isEmpty()) {
return res.status(statusCode.BAD_REQUEST).send(util.fail(statusCode.BAD_REQUEST, message.BAD_REQUEST));
}

const reviewCreateDto: ReviewCreateDto = req.body;
try {
const data = await ReviewService.createReview(reviewCreateDto);
if (!data) {
res.status(statusCode.NOT_FOUND).send(util.fail(statusCode.NOT_FOUND, message.NOT_FOUND));
}
res.status(statusCode.CREATED).send(util.success(statusCode.CREATED, message.CREATE_REVIEW_SUCCESS, data));
} catch (error) {
console.log(error);
res.status(statusCode.INTERNAL_SERVER_ERROR).send(util.fail(statusCode.INTERNAL_SERVER_ERROR, message.INTERNAL_SERVER_ERROR));
}
};

export default {
getReviewList,
createReview,
};
3 changes: 3 additions & 0 deletions src/interfaces/review/ReviewCreateDto.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
import { ReviewInfo } from './ReviewInfo';

export interface ReviewCreateDto extends ReviewInfo {}
2 changes: 2 additions & 0 deletions src/modules/responseMessage.ts
Original file line number Diff line number Diff line change
@@ -5,6 +5,8 @@ const message = {
INTERNAL_SERVER_ERROR: '서버 내부 오류',

READ_MAINPAGE_REVIEW_SUCCESS: '메인 페이지 리뷰 조회 성공',
CREATE_REVIEW_SUCCESS: '리뷰 등록 성공',

READ_SUBSCRIBE_OPTION_SUCCESS: '라면 구독 옵션 조회 성공',
};

2 changes: 2 additions & 0 deletions src/routes/ReviewRouter.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
import { Router } from 'express';
import { body } from 'express-validator';
import { ReviewController } from '../controllers';

const router: Router = Router();

router.get('/', ReviewController.getReviewList);
router.post('/', [body('userName').notEmpty(), body('description').notEmpty(), body('rates').notEmpty(), body('packageName').notEmpty(), body('product').notEmpty()], ReviewController.createReview);

export default router;
19 changes: 19 additions & 0 deletions src/services/ReviewService.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import { PostBaseResponseDto } from '../interfaces/common/PostBaseResponseDto';
import { ReviewCreateDto } from '../interfaces/review/ReviewCreateDto';
import { ReviewResponseDto } from '../interfaces/review/ReviewResponseDto';
import Review from '../models/Review';

@@ -28,6 +30,23 @@ const getReviewList = async (): Promise<ReviewResponseDto[] | null> => {
}
};

const createReview = async (reviewCreateDto: ReviewCreateDto): Promise<PostBaseResponseDto> => {
try {
const review = new Review(reviewCreateDto);
await review.save();

const data = {
_id: review._id,
};

return data;
} catch (error) {
console.log(error);
throw error;
}
};

export default {
getReviewList,
createReview,
};

0 comments on commit f687a93

Please sign in to comment.