This repository was archived by the owner on Jan 9, 2025. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathserver.js
More file actions
112 lines (101 loc) · 3.51 KB
/
server.js
File metadata and controls
112 lines (101 loc) · 3.51 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
require('dotenv').config();
const express = require('express');
const _ = require('lodash');
const mongoose = require('mongoose');
const bodyParser = require('body-parser');
// User Modules
const currDay = require(__dirname + "/user_modules/date.js");
const List = require(__dirname + "/user_modules/List.js");
const Item = require(__dirname + "/user_modules/Item.js");
const days = ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'];
const PORT = process.env.PORT || 3000;
const app = express();
// mongoose.set('strictQuery', false);
app.set('view engine', 'ejs');
app.use(express.static("public"));
app.use(bodyParser.urlencoded({ extended: true }));
const connectDB = async() => {
try{
const conn = await mongoose.connect(process.env.MONGO_URI || "mongodb://127.0.0.1:27017");
console.log(`MongoDB Connected: ${conn.connection.host}`);
} catch(err){
console.log(err);
process.exit(1);
}
}
// Connect to DB
connectDB().then(() => {
app.listen(PORT, () => {
console.log(`Listening on Port ${PORT}`);
})
});
// Set Defaults
Item.setDefaultItems();
app.get("/", async function (req, res) {
let day = currDay.currDay();
const items = await Item.find({});
return res.render("list", {
listTitle: day,
newListItems: items.map((item) => {return item})
});
});
// Express Route Parameters: /:param.
// Access using req.params.param
app.get("/:listName", async function(req, res){
const listName = _.capitalize(req.params.listName);
if(listName === "About"){
return res.render('about');
}
if((await List.find({name: listName})).length === 0){
// Create a list which does not exist
const list = new List({
name: listName,
items: []
});
list.save();
res.redirect("/" + listName);
} else { // Display the existing list
const items = await List.findOne({name: listName}).select('items -_id');
return res.render("list", {
listTitle: listName,
newListItems: (items.items)
});
}
});
app.get("/about/page", function(req, res){
return res.render("about");
})
app.post("/", async function(req, res){
let itemName = req.body.newItem;
let listName = req.body.submit;
const item = new Item({
name: itemName
});
if(days.some((day) => listName.includes(day))){
// Save to document "items"
item.save();
res.redirect("/");
} else {
await List.updateOne({name: listName}, {$push: {items: item}})
.then(()=>console.log(`Updated Model->List:${listName} Successfully`));
res.redirect("/" + listName);
}
});
app.post("/delete", async function(req, res){
checkedItemId = req.body.checkbox;
listName = req.body.listTitle;
if(checkedItemId != undefined){
if(days.some((day) => listName.includes(day))){
// Delete from default Document
await Item.findByIdAndRemove(checkedItemId)
.then(()=>console.log(`Deleted ${checkedItemId} Successfully from default Document`))
.catch((err) => console.log("Deletion Error: " + err));
res.redirect("/");
} else {
// Delete from custom 'List' Document
await List.updateOne({name: listName}, {$pull: {items: {_id: checkedItemId}}}, {safe: true})
.then(() => console.log(`Deleted ${checkedItemId} Successfully from List:${listName}`));
res.redirect("/" + listName);
}
}
});