From 84f2d87cd2c65f1422833743110cd0dc3d5d7747 Mon Sep 17 00:00:00 2001 From: Divya Lakshmi <166861248+divyalakshmi0@users.noreply.github.com> Date: Sat, 26 Oct 2024 20:34:18 +0530 Subject: [PATCH 1/4] Create delete-post.ejs --- views/admin/delete-post.ejs | 59 +++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 views/admin/delete-post.ejs diff --git a/views/admin/delete-post.ejs b/views/admin/delete-post.ejs new file mode 100644 index 0000000..7ac964c --- /dev/null +++ b/views/admin/delete-post.ejs @@ -0,0 +1,59 @@ + + + + + + Delete Post + + + + +
+

Are you sure you want to delete this post?

+

This action cannot be undone.

+
+ + Cancel +
+
+ + + From 31a153495aae1d000883613655f8de9bc4b85c6e Mon Sep 17 00:00:00 2001 From: Divya Lakshmi <166861248+divyalakshmi0@users.noreply.github.com> Date: Sun, 27 Oct 2024 21:47:28 +0530 Subject: [PATCH 2/4] Update Post.js added likes, likedby schema --- server/models/Post.js | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/server/models/Post.js b/server/models/Post.js index 8605a88..3eecc24 100644 --- a/server/models/Post.js +++ b/server/models/Post.js @@ -17,7 +17,15 @@ const PostSchema = new Schema({ updatedAt: { type: Date, default: Date.now - } + }, + likes: { // Counter for the number of likes + type: Number, + default: 0 + }, + likedBy: [{ // Array of user IDs who liked the post, to prevent duplicate likes + type: mongoose.Schema.Types.ObjectId, + ref: 'User' + }] }); -module.exports = mongoose.model('Post', PostSchema); \ No newline at end of file +module.exports = mongoose.model('Post', PostSchema); From b9519c34e2845a902c3b5c5e54ff53fd380b447e Mon Sep 17 00:00:00 2001 From: Divya Lakshmi <166861248+divyalakshmi0@users.noreply.github.com> Date: Sun, 27 Oct 2024 21:49:10 +0530 Subject: [PATCH 3/4] Update admin.js --- server/routes/admin.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/server/routes/admin.js b/server/routes/admin.js index eeccf33..1fe576e 100644 --- a/server/routes/admin.js +++ b/server/routes/admin.js @@ -191,6 +191,20 @@ router.delete('/delete-post/:id', authMiddleware, async (req, res) => { } }); +// POST: Add a like to a post +app.post('/posts/:id/like', async (req, res) => { + const postId = req.params.id; + const userId = req.user.id; // Assume user is authenticated + + const post = await Post.findById(postId); + if (!post.likedBy.includes(userId)) { + post.likes += 1; + post.likedBy.push(userId); + await post.save(); + } + res.status(200).json(post); +}); + /** * POST /register * Admin Registration Route From 00c8f6297900619eb4d47576b8746691965737d6 Mon Sep 17 00:00:00 2001 From: Divya Lakshmi <166861248+divyalakshmi0@users.noreply.github.com> Date: Sun, 27 Oct 2024 21:50:31 +0530 Subject: [PATCH 4/4] Update main.js --- server/routes/main.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/server/routes/main.js b/server/routes/main.js index bc0cea3..cb7c8a2 100644 --- a/server/routes/main.js +++ b/server/routes/main.js @@ -184,6 +184,18 @@ router.post('/send-message', async (req, res) => { } }); +const handleLike = async () => { + if (!liked) { + await axios.post(`/posts/${postId}/like`); + } else { + await axios.delete(`/posts/${postId}/like`); + } + setLiked(!liked); // Update UI state + fetchPostData(); // Re-fetch or update post data +}; +{post.likes} Reactions + + // function insertPostData() { // Post.insertMany([ // {