Ajout initial des fichiers de la version mysal

This commit is contained in:
Rampeur
2025-08-08 18:34:15 +02:00
parent 29635cdf83
commit 9a534d5a17
30 changed files with 1381 additions and 0 deletions
+120
View File
@@ -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));
}
};