diff --git a/controllers/comments.js b/controllers/comments.js new file mode 100644 index 000000000..694a14928 --- /dev/null +++ b/controllers/comments.js @@ -0,0 +1,47 @@ +const Comment = require("../models/Comment") + +module.exports = { + createComment: async (req, res) => { + try { + console.log(req.params) + await Comment.create({ + comment: req.body.comment, + postId: req.params.id, + likes: 0, + user: req.user.id + }); + console.log("Comment has been added!"); + res.redirect("/post/"+req.params.id); + } 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"); + // } + } +}; \ No newline at end of file diff --git a/controllers/posts.js b/controllers/posts.js index a3e2dab5d..47db18c1c 100644 --- a/controllers/posts.js +++ b/controllers/posts.js @@ -1,5 +1,6 @@ const cloudinary = require("../middleware/cloudinary"); const Post = require("../models/Post"); +const Comment = require("../models/Comment") module.exports = { getProfile: async (req, res) => { @@ -21,7 +22,8 @@ module.exports = { getPost: async (req, res) => { try { const post = await Post.findById(req.params.id); - res.render("post.ejs", { post: post, user: req.user }); + const comment = await Comment.find({postId: req.params.id}).sort({ createdAt: "desc" }).lean(); + res.render("post.ejs", { post: post, user: req.user, comment: comment }); } catch (err) { console.log(err); } diff --git a/models/Comment.js b/models/Comment.js new file mode 100644 index 000000000..9a6997358 --- /dev/null +++ b/models/Comment.js @@ -0,0 +1,26 @@ +const mongoose = require("mongoose"); + +const CommentSchema = new mongoose.Schema({ + comment: { + type: String, + required: true, + }, + postId: { + type: mongoose.Schema.Types.ObjectId, + ref: "Post", + }, + likes: { + type: Number, + required: true, + }, + user: { + type: mongoose.Schema.Types.ObjectId, + ref: "User", + }, + createdAt: { + type: Date, + default: Date.now, + }, +}); + +module.exports = mongoose.model("Comment", CommentSchema); diff --git a/routes/comments.js b/routes/comments.js new file mode 100644 index 000000000..26d24711c --- /dev/null +++ b/routes/comments.js @@ -0,0 +1,13 @@ +const express = require("express"); +const router = express.Router(); +const commentsController = require("../controllers/comments"); +const { ensureAuth, ensureGuest } = require("../middleware/auth"); + +//Comments Routes - simplified for now +router.post("/createComment/:id", commentsController.createComment); + +// router.put("/likePost/:id", postsController.likePost); + +// router.delete("/deletePost/:id", postsController.deletePost); + +module.exports = router; \ No newline at end of file diff --git a/server.js b/server.js index 1718db010..a2d4541c5 100644 --- a/server.js +++ b/server.js @@ -10,6 +10,7 @@ const logger = require("morgan"); const connectDB = require("./config/database"); const mainRoutes = require("./routes/main"); const postRoutes = require("./routes/posts"); +const commentRoutes = require("./routes/comments"); //Use .env file in config folder require("dotenv").config({ path: "./config/.env" }); @@ -56,6 +57,7 @@ app.use(flash()); //Setup Routes For Which The Server Is Listening app.use("/", mainRoutes); app.use("/post", postRoutes); +app.use("/comment", commentRoutes); //Server Running app.listen(process.env.PORT, () => { diff --git a/views/post.ejs b/views/post.ejs index c36a1c946..ef7aa3229 100644 --- a/views/post.ejs +++ b/views/post.ejs @@ -27,6 +27,28 @@
<%= post.caption %>