Cantilever-Labs/controllers/blog.js

163 lines
3.8 KiB
JavaScript

const { log } = require("handlebars");
const Blog = require("../models/Blog");
const User = require("../models/User");
module.exports.getAllBlogs = async (req, res, next) => {
try {
let blog = await Blog.find();
if (blog) {
res.json({ blogs: blog });
} else {
console.log("Error in Blog", blog);
return;
}
} catch {
(err) => {
res.status(422).json({ error: err });
};
}
};
module.exports.getSingleBlog = async (req, res, next) => {
try {
const { id } = req.params;
let blog = await Blog.findById({ _id: id });
if (blog) {
res.json({ blog });
} else {
res.json({ error: "Blog Not Found" });
}
} catch {
(err) => {
console.log("Error", err);
};
}
};
module.exports.addBlog = async (req, res, next) => {
const { _id, title, body, author } = req.body; //_id is of user from frontend who is adding the blog.
try {
console.log("Image File", req.file);
let user = await User.findById({ _id });
if (!title) {
res.status(422).json({ message: "Please, Add Title of the Blog" });
return;
}
if (!body) {
res.status(422).json({ message: "Please, Add Body of the Blog" });
return;
}
if (user) {
let blog = new Blog({
title,
body,
image: req.file.location,
date: new Date().toISOString(),
author,
});
await blog.save();
res.json({ message: "Blog Saved Successfully!" });
} else {
res.status.json({ error: "User Doesn't Exists" });
return;
}
} catch {
(err) => {
res.status(422).json({ error: err });
};
}
};
module.exports.deleteBlog = async (req, res, next) => {
const { _id } = req.body;
try {
let blog = await Blog.find({ _id });
if (blog) {
await Blog.findByIdAndDelete(_id);
res.json({ message: "Blog Deleted!" });
} else {
res.status(404).json({ message: "Blog Not Found" });
return;
}
} catch {
(err) => {
res.status(422).json({ error: err });
};
}
};
module.exports.editBlog = async (req, res, next) => {
const { _id, body, title, image } = req.body;
try {
if (!title) {
res.status(422).json({ message: "Please, Add the Title of the Blog." });
return;
}
if (!body) {
res.status(422).json({ message: "Please, Add the Body of the Blog." });
return;
}
if (!image) {
res.status(422).json({ message: "Please, Add the Image of the Blog." });
return;
}
let blog = await Blog.findById({ _id });
if (blog) {
blog.title = title;
blog.body = body;
blog.image = image;
blog = await blog.save();
res.json({ message: "Blog Updated!" });
} else {
res.status(422).json({ error: "Blog Doesn't Found" });
return;
}
} catch {
(err) => {
res.status(422).json({ error: err });
};
}
};
module.exports.commentBlog = async (req, res, next) => {
const comment = req.body.comment;
const comments1 = {
user: req.user._id,
review: comment,
date: Date.now().toString(),
};
try {
if (comment) {
Blog.findByIdAndUpdate(
{ _id: req.params.id },
{
$push: {
comments: comments1,
},
},
{ new: true }
)
.populate("comments.user", "_id name")
.exec((err, result) => {
if (err) {
res.status(503).json({
message: "Some Error Occured!" + err,
});
} else {
res.status(201).json({
message: "Comment posted!" + result,
});
}
});
}
} catch (err) {
if (err) {
res.status(501).json({
message: "internal Server error please try again after some time",
err,
});
}
}
};