diff --git a/controllers/comments.js b/controllers/comments.js new file mode 100644 index 000000000..fabacef2e --- /dev/null +++ b/controllers/comments.js @@ -0,0 +1,17 @@ +const Comment = require('../models/Comment'); + +module.exports = { + createComment: async (req, res) => { + try { + await Comment.create({ + comment: req.body.comment, + likes: 0, + post: req.params.id, + }); + console.log('Comment has been added!'); + res.redirect('/comment/' + req.params.id); + } catch (err) { + console.log(err); + } + }, +}; diff --git a/controllers/posts.js b/controllers/posts.js index a3e2dab5d..0a2e8af70 100644 --- a/controllers/posts.js +++ b/controllers/posts.js @@ -1,19 +1,20 @@ -const cloudinary = require("../middleware/cloudinary"); -const Post = require("../models/Post"); +const cloudinary = require('../middleware/cloudinary'); +const Post = require('../models/Post'); +const Comment = require('../models/Comments'); module.exports = { getProfile: async (req, res) => { try { const posts = await Post.find({ user: req.user.id }); - res.render("profile.ejs", { posts: posts, user: req.user }); + 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 }); + const posts = await Post.find().sort({ createdAt: 'desc' }).lean(); + res.render('feed.ejs', { posts: posts }); } catch (err) { console.log(err); } @@ -21,7 +22,14 @@ 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 posts = await Comment.find({ post: req.params.id }) + .sort({ createdAt: 'desc' }) + .lean(); + res.render('post.ejs', { + post: post, + user: req.user, + comments: comments, + }); } catch (err) { console.log(err); } @@ -39,8 +47,8 @@ module.exports = { likes: 0, user: req.user.id, }); - console.log("Post has been added!"); - res.redirect("/profile"); + console.log('Post has been added!'); + res.redirect('/profile'); } catch (err) { console.log(err); } @@ -53,7 +61,7 @@ module.exports = { $inc: { likes: 1 }, } ); - console.log("Likes +1"); + console.log('Likes +1'); res.redirect(`/post/${req.params.id}`); } catch (err) { console.log(err); @@ -67,10 +75,10 @@ module.exports = { await cloudinary.uploader.destroy(post.cloudinaryId); // Delete post from db await Post.remove({ _id: req.params.id }); - console.log("Deleted Post"); - res.redirect("/profile"); + console.log('Deleted Post'); + res.redirect('/profile'); } catch (err) { - res.redirect("/profile"); + res.redirect('/profile'); } }, }; diff --git a/models/Comment.js b/models/Comment.js new file mode 100644 index 000000000..407f2c973 --- /dev/null +++ b/models/Comment.js @@ -0,0 +1,22 @@ +const mongoose = require('mongoose'); + +const CommentSchema = new mongoose.Schema({ + comment: { + type: String, + required: true, + }, + likes: { + type: Number, + required: true, + }, + post: { + type: mongoose.Schema.Types.ObjectId, + ref: 'Post', + }, + 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..68573267b --- /dev/null +++ b/routes/comments.js @@ -0,0 +1,9 @@ +const express = require('express'); +const router = express.Router(); +const commentsController = require('../controllers/comments'); +const { ensureAuth, ensureGuest } = require('../middleware/auth'); + +//Comment Routes - simplified for now +router.post('/createComment/:id', commentsController.createComment); + +module.exports = router; diff --git a/server.js b/server.js index 1718db010..85aa44b96 100644 --- a/server.js +++ b/server.js @@ -1,45 +1,46 @@ -const express = require("express"); +const express = require('express'); const app = express(); -const mongoose = require("mongoose"); -const passport = require("passport"); -const session = require("express-session"); -const MongoStore = require("connect-mongo")(session); -const methodOverride = require("method-override"); -const flash = require("express-flash"); -const logger = require("morgan"); -const connectDB = require("./config/database"); -const mainRoutes = require("./routes/main"); -const postRoutes = require("./routes/posts"); +const mongoose = require('mongoose'); +const passport = require('passport'); +const session = require('express-session'); +const MongoStore = require('connect-mongo')(session); +const methodOverride = require('method-override'); +const flash = require('express-flash'); +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" }); +require('dotenv').config({ path: './config/.env' }); // Passport config -require("./config/passport")(passport); +require('./config/passport')(passport); //Connect To Database connectDB(); //Using EJS for views -app.set("view engine", "ejs"); +app.set('view engine', 'ejs'); //Static Folder -app.use(express.static("public")); +app.use(express.static('public')); //Body Parsing app.use(express.urlencoded({ extended: true })); app.use(express.json()); //Logging -app.use(logger("dev")); +app.use(logger('dev')); //Use forms for put / delete -app.use(methodOverride("_method")); +app.use(methodOverride('_method')); // Setup Sessions - stored in MongoDB app.use( session({ - secret: "keyboard cat", + secret: 'keyboard cat', resave: false, saveUninitialized: false, store: new MongoStore({ mongooseConnection: mongoose.connection }), @@ -54,10 +55,11 @@ app.use(passport.session()); app.use(flash()); //Setup Routes For Which The Server Is Listening -app.use("/", mainRoutes); -app.use("/post", postRoutes); +app.use('/', mainRoutes); +app.use('/post', postRoutes); +app.use('/comment', commentRoutes); //Server Running app.listen(process.env.PORT, () => { - console.log("Server is running, you better catch it!"); + console.log('Server is running, you better catch it!'); }); diff --git a/views/post.ejs b/views/post.ejs index c36a1c946..ff2aa4b0c 100644 --- a/views/post.ejs +++ b/views/post.ejs @@ -27,6 +27,23 @@

<%= post.caption %>

+
+

Add a comment

+
+
+ + +
+ +
+
+
Return to Profile Return to Feed