const express = require("express"); const Post = require("../models/Post"); const auth = require("../middleware/auth"); const router = express.Router(); // Get all posts router.get("/", async (req, res) => { try { const posts = await Post.find().populate("user", ["name"]); res.json(posts); } catch (err) { console.error(err.message); res.status(500).send("Server error"); } }); // Create a post router.post("/", auth, async (req, res) => { const { content, imageUrl } = req.body; try { const newPost = new Post({ user: req.user.id, content, imageUrl, }); const post = await newPost.save(); res.json(post); } catch (err) { console.error(err.message); res.status(500).send("Server error"); } }); // Like a post router.put("/like/:id", auth, async (req, res) => { try { const post = await Post.findById(req.params.id); if (!post) { return res.status(404).json({ msg: "Post not found" }); } // Check if the post has already been liked by this user if ( post.likes.filter((like) => like.toString() === req.user.id).length > 0 ) { return res.status(400).json({ msg: "Post already liked" }); } post.likes.unshift(req.user.id); await post.save(); res.json(post.likes); } catch (err) { console.error(err.message); res.status(500).send("Server error"); } }); module.exports = router;