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

Popular posts from this blog

DELETE ROUTE

CREATE ROUTE

Schema type options