Ajout initial des fichiers de la version mysal
This commit is contained in:
@@ -0,0 +1,120 @@
|
||||
const Comment = require("../models/Comment");
|
||||
const Article = require("../models/Article");
|
||||
const User = require("../models/User");
|
||||
const asyncHandler = require("../middlewares/asyncHandler");
|
||||
const { appendFollowers } = require("../util/helpers");
|
||||
const ErrorResponse = require("../util/errorResponse");
|
||||
|
||||
module.exports.getComments = asyncHandler(async (req, res, next) => {
|
||||
const { slug } = req.params;
|
||||
const { loggedUser } = req;
|
||||
|
||||
const article = await Article.findOne({
|
||||
where: { slug: slug },
|
||||
});
|
||||
|
||||
if (!article) return next(new ErrorResponse("Article not found", 404));
|
||||
|
||||
const comments = await article.getComments({
|
||||
include: [
|
||||
{
|
||||
model: User,
|
||||
as: "author",
|
||||
attributes: ["username", "bio", "image"],
|
||||
},
|
||||
],
|
||||
});
|
||||
|
||||
for (let comment of comments) {
|
||||
await appendFollowers(loggedUser, comment);
|
||||
}
|
||||
|
||||
res.status(200).json({ comments });
|
||||
});
|
||||
|
||||
module.exports.getComment = asyncHandler(async (req, res, next) => {
|
||||
const { slug, id } = req.params;
|
||||
const { loggedUser } = req;
|
||||
|
||||
const article = await Article.findOne({
|
||||
where: { slug: slug },
|
||||
});
|
||||
|
||||
if (!article) return next(new ErrorResponse("Article not found", 404));
|
||||
|
||||
const comment = await Comment.findOne({
|
||||
where: { id: id },
|
||||
include: [
|
||||
{
|
||||
model: User,
|
||||
as: "author",
|
||||
attributes: ["username", "bio", "image"],
|
||||
},
|
||||
],
|
||||
});
|
||||
if (!comment) return next(new ErrorResponse("Comment not found", 404));
|
||||
|
||||
await appendFollowers(loggedUser, comment);
|
||||
|
||||
res.status(200).json({ comment });
|
||||
});
|
||||
|
||||
module.exports.createComment = asyncHandler(async (req, res, next) => {
|
||||
const { body } = req.body.comment;
|
||||
const { slug } = req.params;
|
||||
const { loggedUser } = req;
|
||||
|
||||
fieldValidation(body, next);
|
||||
|
||||
const article = await Article.findOne({
|
||||
where: { slug: slug },
|
||||
include: [
|
||||
{ model: User, as: "author", attributes: ["username", "bio", "image"] },
|
||||
],
|
||||
});
|
||||
|
||||
if (!article) return next(new ErrorResponse("Article not found", 404));
|
||||
|
||||
const comment = await Comment.create({
|
||||
body: body,
|
||||
articleId: article.id,
|
||||
authorId: loggedUser.id,
|
||||
});
|
||||
|
||||
delete loggedUser.dataValues.token;
|
||||
await appendFollowers(loggedUser, loggedUser);
|
||||
|
||||
comment.dataValues.author = loggedUser;
|
||||
|
||||
res.status(201).json({ comment });
|
||||
});
|
||||
|
||||
module.exports.deleteComment = asyncHandler(async (req, res, next) => {
|
||||
const { slug, id } = req.params;
|
||||
const { loggedUser } = req;
|
||||
|
||||
const article = await Article.findOne({
|
||||
where: { slug: slug },
|
||||
});
|
||||
|
||||
if (!article) return next(new ErrorResponse("Article not found", 404));
|
||||
|
||||
const comment = await Comment.findOne({
|
||||
where: { id: id },
|
||||
});
|
||||
|
||||
if (!comment) return next(new ErrorResponse("Comment not found", 404));
|
||||
|
||||
if (comment.authorId !== loggedUser.id)
|
||||
return next(new ErrorResponse("Unauthorized", 401));
|
||||
|
||||
await comment.destroy();
|
||||
|
||||
res.status(200).json({ comment });
|
||||
});
|
||||
|
||||
const fieldValidation = (field, next) => {
|
||||
if (!field) {
|
||||
return next(new ErrorResponse(`Missing fields`, 400));
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user