hayat / routes /cmd.js
Mohamed Abu Basith
addded all files
97f53b4
const express = require("express");
const router = express.Router();
const mongoose = require("mongoose");
const multer = require('multer');
const User = require('../Database/models/user');
const Post = require('../Database/models/newPost');
const Comment = require('../Database/models/comments');
const response = require('../utils/responseModel');
//Disk storage where image store
const storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, './uploads/fruits');
},
filename: function (req, file, cb) {
cb(null, file.originalname);
}
});
//Check the image formate
const fileFilter = (req, file, cb) => {
// reject a file
if (file.mimetype === 'image/jpeg' || file.mimetype === 'image/png' || file.mimetype === 'image/jpg') {
cb(null, true);
} else {
cb(null, false);
}
};
const upload = multer({
storage: storage,
limits: {
fileSize: 1024 * 1024 * 10
},
fileFilter: fileFilter
});
router.post('/create', upload.single('file'), async (req, res, next) => {
console.log(req.body);
const userData = await User.findOne({ unique_id: req.body.userId }).exec();
if (!userData) {
res.send(response.failedResponse('Data not found!'))
} else {
console.log(" Data => " + userData)
Post.findOne({ _id: req.body.postId }, function (err, postData) {
if (!postData) {
res.status(500).json({ error: 'Post not found!' });
} else {
var comment = Comment({
user: userData,
post: postData,
userId: req.body.userId,
comment: req.body.comment,
likes: userData
})
comment.save()
.then((post) => {
res.status(200).json(post);
})
.catch((error) => {
res.status(500).json({ error: 'An error occurred while creating the post.' });
});
}
});
}
});
router.get('/:id', async (req, res, next) => {
const postData = await Post.findOne({ _id: req.params.id }).exec();
if (!postData) {
res.status(500).json({ error: 'Post not found!' });
} else {
const comments = await Comment.find({ post: postData })
.sort({ createdAt: 'descending' });
if (!comments) {
res.status(500).json({ error: 'Comments not found!' });
} else {
res.status(200).json({
status: 'success',
count: comments.length,
comments,
});
}
}
});
router.get('/byId', async (req, res, next) => {
const post = await Post.findById(req.params.id).populate({
path: 'profile',
select: '-bio -website -user -_v',
});
if (!post) {
return next(new AppError('Post not found', 400));
}
res.status(200).json({
status: 'success',
post,
});
});
router.delete('/', async (req, res, next) => {
//const post = await Post.deleteOne({ _id: req.params.id });
const post = await Post.findById(req.params.id);
if (!post) {
return next(new AppError('Post not found', 400));
}
// console.log(post, post.user.toString() === req.user.id)
if (post.user.toString() !== req.user.id) {
return next(
new AppError('You are not authorized to delete this post', 401)
);
}
post.commentsPost.length &&
(await Comment.findByIdAndDelete(post.commentsPost[0]._id));
await post.remove();
res.status(200).json({
message: 'deleted',
});
});
router.post('/like', async (req, res, next) => {
const post = await Post.findById(req.params.id).populate('profile');
if (!post) {
return next(new AppError('Post not found', 400));
}
const id = await post.getProfileId(req.user.id);
if (post.likes.includes(id)) {
const index = post.likes.indexOf(id);
post.likes.splice(index, 1);
await post.save((err) => {
console.log(err);
});
await Notification.deleteMany({
to: post.profile._id,
user: id,
type: 'Like',
});
} else {
post.likes.push(id);
await post.save();
}
res.status(200).json({
status: 'success',
post,
});
});
router.delete('/:id', async (req, res) => {
Comment.remove({ _id: req.params.id })
.exec()
.then(result => {
res.status(200).send(response.successResponse(result));
})
.catch(error => {
res.send(500).send(response.failedResponse(error))
});
});
module.exports = router;