TOTAL CODE
INDEX.JSconst express = require("express");
const app = express();
const mongoose = require("mongoose");
const path = require("path");
const Chat = require("./models/chat.js");
const methodOverride = require("method-override");
app.set("views", path.join(__dirname, "views"));
app.use(express.static(path.join(__dirname, "public")));
app.set("view engine", "ejs");
app.use(express.urlencoded({ extended: true }));
app.use(methodOverride("_method"));
main()
.then(() => {
console.log("connection successful");
})
.catch((err) => {
console.log(err);
});
async function main() {
await mongoose.connect("mongodb://127.0.0.1:27017/whatsapp");
}
app.get("/", (req, res) => {
res.send("server working");
});
app.listen(8080, () => {
console.log(`listening to port`);
});
// INDEX ROUTE
app.get("/chats", async (req, res) => {
let chats = await Chat.find();
res.render("index.ejs", { chats });
});
// NEW ROUTE
app.get("/chats/new", (req, res) => {
res.render("new.ejs");
});
// POST ROUTE
app.post("/chats", (req, res) => {
let { from, to, msg } = req.body;
let newchat = new Chat({
from: from,
msg: msg,
to: to,
created_at: new Date(),
});
newchat
.save()
.then((res) => {
console.log("chat was saved");
})
.catch((err) => {
console.log(err);
});
res.redirect("/chats");
});
// EDIT ROUTE
app.get("/chats/:id/edit", async (req, res) => {
let { id } = req.params;
let chat = await Chat.findById(id);
res.render("edit.ejs", { chat });
});
let chat1 = new Chat({
from: "abhi",
to: "ash",
msg: "silencer",
created_at: new Date(),
});
//UPDATE ROUTE
app.put("/chats/:id",async (req, res) => {
let { id } = req.params;
let { msg:newMsg } = req.body;
let updatedmsg = await Chat.findByIdAndUpdate(
id,
{ msg:newMsg },
{ new: true, runValidators: true }
);
console.log(updatedmsg);
res.redirect("/chats");
});
// DELETE ROUTE
app.delete("/chats/:id",async(req,res)=>{
let {id}=req.params;
let deletedChat=await Chat.findByIdAndDelete(id);
console.log(deletedChat);
res.redirect("/chats");
})
// chat1
// .save()
// .then((res) => {
// console.log(res);
// })
// .catch((err) => {
// console.log(err);
// });
INIT.JS
const mongoose = require("mongoose");
const Chat = require("./models/chat.js");
main()
.then(() => {
console.log("connection successful");
})
.catch((err) => {
console.log(err);
});
async function main() {
await mongoose.connect("mongodb://127.0.0.1:27017/whatsapp");
}
let allChats=[
{
from:"ash",
to:"bharath",
msg:"ee saala cup uu lollipup uu",
created_at:new Date()
},
{
from:"abhi",
to:"bharath",
msg:"ee saala cup uu lollipup uu",
created_at:new Date()
},{
from:"abhi",
to:"vinay",
msg:"Khansaar erupekkala",
created_at:new Date()
},{
from:"vinay",
to:"bharath",
msg:"ee saala cup namde",
created_at:new Date()
}
];
Chat.insertMany(allChats);
INDEX.EJS
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>All chats</title>
<link rel="stylesheet" href="style.css" />
</head>
<body>
<h2>All Chats!</h2>
<form method="get" action="/chats/new">
<button>new chat!</button>
</form>
<% for(let chat of chats) { %>
<div class="Chat">
<p>From:<i> <%= chat.from %></i></p>
<div class="msg"><p>Message: <%= chat.msg %></p></div>
<form method="get" action="/chats/<%= chat._id %>/edit">
<button>Edit</button>
</form>
<form method="post" action="/chats/<%= chat._id %>?_method=delete">
<button>Delete</button>
</form>
<p>Received by: <i> <%= chat.to%></i></p>
<hr />
<p><%= chat.created_at.toString().split(" ") [4] %></p>
<p><%= chat.created_at.toString().split(" ").slice(0,4).join(" ") %></p>
</div>
<br />
<% } %>
</body>
</html>
NEW.EJS
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Add a new Chat!</title>
</head>
<body>
<h2>Add a new chat!</h2>
<form method="post" action="/chats">
<input placeholder="Enter your name" name="from" />
<br /><br />
<textarea name="msg">Write you're message</textarea>
<br /><br />
<input placeholder="add receiver" name="to"/>
<br /><br />
<button>Create new chat!</button>
</form>
</body>
</html>
EDIT.EJS
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Edit chat</title>
</head>
<body>
<form method="post" action="/chats/<%=chat._id%>?_method=put">
<h3>Edit Chat: <%= chat._id %></h3>
<p>Chat sent from:<b><%= chat.from %></b> to <b><%= chat.to %></b></p>
<textarea name="msg" rows="7" cols="25"> <%= chat.msg %></textarea>
<button>Save</button>
</form>
</body>
</html>
Comments
Post a Comment