Skip to content

Commit

Permalink
Merge pull request #97 from TeamBookTez/feat/book-detail-api
Browse files Browse the repository at this point in the history
Feat/get book detail api
  • Loading branch information
holmir97 authored Feb 10, 2022
2 parents b1807d2 + afbbe91 commit dbb62a0
Show file tree
Hide file tree
Showing 3 changed files with 199 additions and 1 deletion.
84 changes: 84 additions & 0 deletions src/controller/book.ts
Original file line number Diff line number Diff line change
Expand Up @@ -108,9 +108,93 @@ const getBookController = async (req: Request, res: Response) => {
}
};

/**
* @서재 독서전 책 조회
* @route GET /book/pre
* @access private
*/
const getBookPreController = async (req: Request, res: Response) => {
try {
const resData = await bookService.getBookPreService(req.user.id);
return response.dataResponse(
res,
returnCode.OK,
"독서전 서재 조회 성공",
true,
resData
);
} catch (err) {
slack.slackWebhook(req, err.message);
console.error(err.message);
return response.basicResponse(
res,
returnCode.INTERNAL_SERVER_ERROR,
false,
"서버 오류"
);
}
};

/**
* @서재 독서중 책 조회
* @route GET /book/peri
* @access private
*/
const getBookPeriController = async (req: Request, res: Response) => {
try {
const resData = await bookService.getBookPeriService(req.user.id);
return response.dataResponse(
res,
returnCode.OK,
"독서중 서재 조회 성공",
true,
resData
);
} catch (err) {
slack.slackWebhook(req, err.message);
console.error(err.message);
return response.basicResponse(
res,
returnCode.INTERNAL_SERVER_ERROR,
false,
"서버 오류"
);
}
};

/**
* @서재 독서완료 책 조회
* @route GET /book/post
* @access private
*/
const getBookPostController = async (req: Request, res: Response) => {
try {
const resData = await bookService.getBookPostService(req.user.id);
return response.dataResponse(
res,
returnCode.OK,
"독서완료 서재 조회 성공",
true,
resData
);
} catch (err) {
slack.slackWebhook(req, err.message);
console.error(err.message);
return response.basicResponse(
res,
returnCode.INTERNAL_SERVER_ERROR,
false,
"서버 오류"
);
}
};

const bookController = {
postBookController,
getBookController,
getBookPreController,
getBookPeriController,
getBookPostController,
};

export default bookController;
3 changes: 3 additions & 0 deletions src/router/book.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,5 +10,8 @@ const router = express.Router();

router.post("/", isLogin, bookController.postBookController);
router.get("/", auth, bookController.getBookController);
router.get("/pre", auth, bookController.getBookPreController);
router.get("/peri", auth, bookController.getBookPeriController);
router.get("/post", auth, bookController.getBookPostController);

module.exports = router;
113 changes: 112 additions & 1 deletion src/service/book.ts
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,115 @@ const getBookService = async (userId: number) => {
thumbnail: review.book.thumbnail,
title: review.book.title,
author: review.book.author,
state: review.reviewSt,
reviewSt: review.reviewSt,
});
})
);

return { books: books };
};

/**
* @서재 독서전 책 조회
* @route GET /book/pre
* @access private
*/
const getBookPreService = async (userId: number) => {
let books = [];
await Review.findAll({
attributes: ["id", "reviewSt"],
include: [
{
model: Book,
attributes: ["title", "author", "thumbnail"],
},
],
where: {
userId,
reviewSt: 2,
isDeleted: false,
},
order: [["updatedAt", "DESC"]],
}).then((reviews) =>
reviews.forEach((review) => {
books.push({
reviewId: review.id,
thumbnail: review.book.thumbnail,
title: review.book.title,
author: review.book.author,
reviewSt: review.reviewSt,
});
})
);

return { books: books };
};

/**
* @서재 독서중 책 조회
* @route GET /book/peri
* @access private
*/
const getBookPeriService = async (userId: number) => {
let books = [];
await Review.findAll({
attributes: ["id", "reviewSt"],
include: [
{
model: Book,
attributes: ["title", "author", "thumbnail"],
},
],
where: {
userId,
reviewSt: 3,
isDeleted: false,
},
order: [["updatedAt", "DESC"]],
}).then((reviews) =>
reviews.forEach((review) => {
books.push({
reviewId: review.id,
thumbnail: review.book.thumbnail,
title: review.book.title,
author: review.book.author,
reviewSt: review.reviewSt,
});
})
);

return { books: books };
};

/**
* @서재 독서완료 책 조회
* @route GET /book/post
* @access private
*/
const getBookPostService = async (userId: number) => {
let books = [];
await Review.findAll({
attributes: ["id", "reviewSt"],
include: [
{
model: Book,
attributes: ["title", "author", "thumbnail"],
},
],
where: {
userId,
reviewSt: 4,
isDeleted: false,
},
order: [["updatedAt", "DESC"]],
}).then((reviews) =>
reviews.forEach((review) => {
books.push({
reviewId: review.id,
thumbnail: review.book.thumbnail,
title: review.book.title,
author: review.book.author,
reviewSt: review.reviewSt,
});
})
);
Expand All @@ -144,6 +252,9 @@ const getBookService = async (userId: number) => {
const bookService = {
postBookService,
getBookService,
getBookPreService,
getBookPeriService,
getBookPostService,
};

export default bookService;

0 comments on commit dbb62a0

Please sign in to comment.