From 562675071a901bb869d25f18eb4c3d08bcf6acb8 Mon Sep 17 00:00:00 2001 From: "Cole W." Date: Tue, 7 Jan 2025 12:09:38 -0500 Subject: [PATCH 1/5] added delete review controller and route --- package-lock.json | 13 +++++++++++++ package.json | 1 + server/controllers/reviews.js | 22 ++++++++++++++++++++++ server/routes/reviews.js | 5 +++++ 4 files changed, 41 insertions(+) diff --git a/package-lock.json b/package-lock.json index 39553cc..b291027 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,6 +11,7 @@ "@clerk/clerk-react": "^5.21.0", "@clerk/clerk-sdk-node": "^5.1.4", "@clerk/react-router": "^0.1.5", + "dotenv": "^16.4.7", "react": "^18.3.1", "react-dom": "^18.3.1", "react-router": "^7.1.1", @@ -2096,6 +2097,18 @@ "tslib": "^2.0.3" } }, + "node_modules/dotenv": { + "version": "16.4.7", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz", + "integrity": "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, "node_modules/dunder-proto": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", diff --git a/package.json b/package.json index 66abbae..f9550e8 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,7 @@ "@clerk/clerk-react": "^5.21.0", "@clerk/clerk-sdk-node": "^5.1.4", "@clerk/react-router": "^0.1.5", + "dotenv": "^16.4.7", "react": "^18.3.1", "react-dom": "^18.3.1", "react-router": "^7.1.1", diff --git a/server/controllers/reviews.js b/server/controllers/reviews.js index 0212bbd..86ae000 100644 --- a/server/controllers/reviews.js +++ b/server/controllers/reviews.js @@ -1,6 +1,7 @@ const cloudinary = require('../middleware/cloudinary') const Review = require('../models/Reviews') + const reviewController = { getProfile: async (req, res) => { try { @@ -73,6 +74,27 @@ const reviewController = { res.redirect('/profile') } }, + + deleteReview: async (req, res) => { + try { + // extract reviewId + const { reviewId } = req.params; + + // find & delete review in db + const deletedReview = await Review.findByIdAndDelete(reviewId); + + if (!deletedReview) { + return res.status(404).json({ message: 'Review not found' }); + } + + console.log(`Review ${reviewId} has been deleted`); + res.status(200).json({ message: 'Review deleted successfully' }); + } catch (err) { + console.error('Error deleting review:', err); + res.status(500).json({ message: 'Server error while deleting review' }); + } + }, + } export default reviewController diff --git a/server/routes/reviews.js b/server/routes/reviews.js index 0ef5a4a..08d8af1 100644 --- a/server/routes/reviews.js +++ b/server/routes/reviews.js @@ -1,5 +1,6 @@ import express from 'express' const reviewRouter = express.Router() +import reviewController from '../controllers/reviews.js'; // const upload = require("../middleware/multer"); // const postsController = require("../controllers/posts"); // const { ensureAuth, ensureGuest } = require("../middleware/auth"); @@ -13,5 +14,9 @@ const reviewRouter = express.Router() // router.delete("/deletePost/:id", postsController.deletePost); + +// delete a review by reviewId +reviewRouter.delete('/:reviewId', reviewController.deleteReview); + // module.exports = router; export default reviewRouter From f353147ab0ccb42aad57ee842f1b306f834f45ba Mon Sep 17 00:00:00 2001 From: "Cole W." Date: Tue, 7 Jan 2025 14:11:36 -0500 Subject: [PATCH 2/5] added delete review route and controller #17 --- server/controllers/reviews.js | 34 +++++++++++++++++----------------- server/routes/reviews.js | 5 ++--- 2 files changed, 19 insertions(+), 20 deletions(-) diff --git a/server/controllers/reviews.js b/server/controllers/reviews.js index 86ae000..54f6a09 100644 --- a/server/controllers/reviews.js +++ b/server/controllers/reviews.js @@ -1,7 +1,6 @@ const cloudinary = require('../middleware/cloudinary') const Review = require('../models/Reviews') - const reviewController = { getProfile: async (req, res) => { try { @@ -77,24 +76,25 @@ const reviewController = { deleteReview: async (req, res) => { try { - // extract reviewId - const { reviewId } = req.params; - - // find & delete review in db - const deletedReview = await Review.findByIdAndDelete(reviewId); - - if (!deletedReview) { - return res.status(404).json({ message: 'Review not found' }); - } - - console.log(`Review ${reviewId} has been deleted`); - res.status(200).json({ message: 'Review deleted successfully' }); + // extract reviewId + const { reviewId } = req.params + + // find & delete review in db + const deletedReview = await Review.findByIdAndDelete(reviewId) + + if (!deletedReview) { + return res.status(404).json({ message: 'Review not found' }) + } + + console.log(`Review ${reviewId} has been deleted`) + res.status(200).json({ message: 'Review deleted successfully' }) } catch (err) { - console.error('Error deleting review:', err); - res.status(500).json({ message: 'Server error while deleting review' }); + console.error('Error deleting review:', err) + res.status(500).json({ + message: 'Server error while deleting review', + }) } - }, - + }, } export default reviewController diff --git a/server/routes/reviews.js b/server/routes/reviews.js index 08d8af1..ae68c59 100644 --- a/server/routes/reviews.js +++ b/server/routes/reviews.js @@ -1,6 +1,6 @@ import express from 'express' const reviewRouter = express.Router() -import reviewController from '../controllers/reviews.js'; +import reviewController from '../controllers/reviews.js' // const upload = require("../middleware/multer"); // const postsController = require("../controllers/posts"); // const { ensureAuth, ensureGuest } = require("../middleware/auth"); @@ -14,9 +14,8 @@ import reviewController from '../controllers/reviews.js'; // router.delete("/deletePost/:id", postsController.deletePost); - // delete a review by reviewId -reviewRouter.delete('/:reviewId', reviewController.deleteReview); +reviewRouter.delete('/:reviewId', reviewController.deleteReview) // module.exports = router; export default reviewRouter From 6abcf6f7c692eb474bca4afdda4321fac8b48ebb Mon Sep 17 00:00:00 2001 From: "Cole W." Date: Tue, 7 Jan 2025 18:23:35 -0500 Subject: [PATCH 3/5] added .env and changed to import #17 --- server/controllers/reviews.js | 74 +---------------------------------- 1 file changed, 1 insertion(+), 73 deletions(-) diff --git a/server/controllers/reviews.js b/server/controllers/reviews.js index 54f6a09..b8bcd9f 100644 --- a/server/controllers/reviews.js +++ b/server/controllers/reviews.js @@ -1,79 +1,7 @@ const cloudinary = require('../middleware/cloudinary') -const Review = require('../models/Reviews') +import Review from "../models/Review.js" const reviewController = { - getProfile: async (req, res) => { - try { - const posts = await Post.find({ user: req.user.id }) - res.render('profile.ejs', { posts: posts, user: req.user }) - } catch (err) { - console.log(err) - } - }, - getFeed: async (req, res) => { - try { - const posts = await Post.find().sort({ createdAt: 'desc' }).lean() - res.render('feed.ejs', { posts: posts }) - } catch (err) { - console.log(err) - } - }, - getPost: async (req, res) => { - try { - const post = await Post.findById(req.params.id) - res.render('post.ejs', { post: post, user: req.user }) - } catch (err) { - console.log(err) - } - }, - createPost: async (req, res) => { - try { - // Upload image to cloudinary - const result = await cloudinary.uploader.upload(req.file.path) - - await Post.create({ - title: req.body.title, - image: result.secure_url, - cloudinaryId: result.public_id, - caption: req.body.caption, - likes: 0, - user: req.user.id, - }) - console.log('Post has been added!') - res.redirect('/profile') - } catch (err) { - console.log(err) - } - }, - likePost: async (req, res) => { - try { - await Post.findOneAndUpdate( - { _id: req.params.id }, - { - $inc: { likes: 1 }, - }, - ) - console.log('Likes +1') - res.redirect(`/post/${req.params.id}`) - } catch (err) { - console.log(err) - } - }, - deletePost: async (req, res) => { - try { - // Find post by id - let post = await Post.findById({ _id: req.params.id }) - // Delete image from cloudinary - await cloudinary.uploader.destroy(post.cloudinaryId) - // Delete post from db - await Post.remove({ _id: req.params.id }) - console.log('Deleted Post') - res.redirect('/profile') - } catch (err) { - res.redirect('/profile') - } - }, - deleteReview: async (req, res) => { try { // extract reviewId From c94827b8212d3acdc0854d889c7942af5e7a5f00 Mon Sep 17 00:00:00 2001 From: "Cole W." Date: Tue, 7 Jan 2025 18:31:41 -0500 Subject: [PATCH 4/5] added env files and require to import #17 --- server/controllers/reviews.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/controllers/reviews.js b/server/controllers/reviews.js index b8bcd9f..30103e9 100644 --- a/server/controllers/reviews.js +++ b/server/controllers/reviews.js @@ -1,5 +1,5 @@ const cloudinary = require('../middleware/cloudinary') -import Review from "../models/Review.js" +import Review from '../models/Review.js' const reviewController = { deleteReview: async (req, res) => { From feaeadde56333c7f86f250da7ff2fa67c1ea4744 Mon Sep 17 00:00:00 2001 From: Aidan Diaz Date: Wed, 8 Jan 2025 11:23:48 -0500 Subject: [PATCH 5/5] removed duplicate line, where reviewController was being imported twice #69 --- server/routes/reviews.js | 1 - 1 file changed, 1 deletion(-) diff --git a/server/routes/reviews.js b/server/routes/reviews.js index 342140b..3f2f34c 100644 --- a/server/routes/reviews.js +++ b/server/routes/reviews.js @@ -1,7 +1,6 @@ import express from 'express' import reviewController from '../controllers/reviews.js' const reviewRouter = express.Router() -import reviewController from '../controllers/reviews.js' reviewRouter.get('/:id', reviewController.getUserReviews); // const upload = require("../middleware/multer");