Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feat/review now #40

Merged
merged 7 commits into from
Jan 14, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
57 changes: 56 additions & 1 deletion src/controller/review.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ import reviewService from "../service/review";
* @access private
* @error
* 1. 요청 값이 잘못됨
* 2. 존재하지 않는 ISBN
* 3. 이미 존재하는 독후감
*/
const postReviewBeforeController = async (req: Request, res: Response) => {
try {
Expand Down Expand Up @@ -55,7 +57,59 @@ const postReviewBeforeController = async (req: Request, res: Response) => {
res,
returnCode.OK,
true,
"독서 중 등록 성공",
"작성이 완료되었습니다.",
resData
);
}
} catch (err) {
slack.slackWebhook(req, err.message);
console.error(err.message);
response.basicResponse(
res,
returnCode.INTERNAL_SERVER_ERROR,
false,
"서버 오류"
);
}
};

/**
* @독서중 독서 중 작성
* @route POST /review/now/:reviewId
* @access private
* @error
* 1. 요청 값이 잘못됨
* 2. 존재하지 않는 Review
*/
const postReviewNowController = async (req: Request, res: Response) => {
try {
const resData = await reviewService.postReviewNowService(
Number(req.params.reviewId),
req.body.userID.id,
req.body.answerThree,
req.body.progress
);

if (resData === constant.NULL_VALUE) {
response.basicResponse(
res,
returnCode.BAD_REQUEST,
false,
"요청값이 없습니다."
);
} else if (resData === constant.WRONG_REQUEST_VALUE) {
response.basicResponse(
res,
returnCode.BAD_REQUEST,
false,
"존재하지 않는 Review입니다."
);
} else {
response.dataResponse(
res,
returnCode.OK,
true,
"작성이 완료되었습니다.",
resData
);
}
Expand Down Expand Up @@ -173,6 +227,7 @@ const getReviewController = async (req: Request, res: Response) => {

const reviewController = {
postReviewBeforeController,
postReviewNowController,
patchReviewController,
getReviewController,
};
Expand Down
20 changes: 14 additions & 6 deletions src/router/review.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,25 +6,33 @@ import authMiddleware from "../middleware/auth";

const router = express.Router();

// 독후감 조회
router.get(
"/:reviewId",
authMiddleware,
reviewController.getReviewController
);

// 독서 전
router.post(
"/before/:isbn",
authMiddleware,
reviewController.postReviewBeforeController
);

// 독서 중
router.patch(
"/now/:reviewId",
authMiddleware,
reviewController.postReviewNowController
)

// 독서 후 수정
router.patch(
"/:reviewId",
authMiddleware,
reviewController.patchReviewController
);

// 독후감 조회
router.get(
"/:reviewId",
authMiddleware,
reviewController.getReviewController
);

module.exports = router;
49 changes: 49 additions & 0 deletions src/service/review.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ import { User, Book, Review } from "../models";
* @access private
* @error
* 1. 요청 값이 잘못됨
* 2. 존재하지 않는 ISBN
* 3. 이미 존재하는 독후감
*/
const postReviewBeforeService = async (
isbn: string,
Expand Down Expand Up @@ -88,6 +90,52 @@ const postReviewBeforeService = async (
return { reviewId: review.id };
};

/**

* @독서중 독서 중 작성
* @route POST /review/now/:reviewId
* @access private
* @error
* 1. 요청 값이 잘못됨
* 2. 존재하지 않는 Review
*/
const postReviewNowService = async (
reviewId: number,
userId: number,
answerThree: JSON,
progress: number
) => {
if (!reviewId || !userId || !answerThree || !progress) {
return constant.NULL_VALUE;
}

// user 확인
const user = await User.findOne({ where: { id: userId } });

// 해당 review 조회
const review = await Review.findOne({
where: {
[Op.and]: [{ id: reviewId }, { user_id: user.id }, { is_deleted: false }],
},
});

// 2. 존재하지 않는 review
if (!review) {
return constant.WRONG_REQUEST_VALUE;
}

// 3. review update
review.update({
answer_three: answerThree,
progress: progress,
});

// 변경 리뷰 저장
review.save();
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

저도 담에 일케 할래요


return { reviewId: review.id };
};

/**
* @독서 완료 후 답변 수정
* @route PATCH /review/:reviewId
Expand Down Expand Up @@ -172,6 +220,7 @@ const getReviewService = async (userId: number, reviewId: number) => {

const reviewService = {
postReviewBeforeService,
postReviewNowService,
patchReviewService,
getReviewService,
};
Expand Down