-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp.js
138 lines (119 loc) · 3.19 KB
/
app.js
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
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
const express = require('express')
const bodyParser = require('body-parser')
const morgan = require('morgan')
const mongoose = require('mongoose')
const app = express()
mongoose.connect('mongodb://localhost:27017/todolistDB').then(() => {
console.log('DATABASE CONNECTION SUCCESSFUL');
})
mongoose.connection.on('error', err => {
console.log(`DATABASE CONNECTION ERROR: ${err.message}`)
})
const itemsSchema = new mongoose.Schema(
{
name: {
type: String
}
}
)
const Item = mongoose.model('Item', itemsSchema)
const item = new Item(
{
name: "Welcome to you todo list"
}
)
const item2 = new Item(
{
name: "Hit the + button to add a new item"
}
)
const item3 = new Item(
{
name: "<--- hit this to delete an item"
}
)
const defaultItems = [item, item2, item3];
const listSchema = new mongoose.Schema(
{
name: {
type: String
},
items: [itemsSchema]
}
)
const List = mongoose.model('List', listSchema);
app.set('view engine', 'ejs');
app.use(bodyParser.urlencoded({extended: true}))
app.use(express.static("public"))
app.use(morgan("dev"))
app.get('/', (_req, res) => {
Item.find({}, (err, itemLog) => {
if (itemLog.length === 0){
Item.insertMany(defaultItems, err => {
if (err) {
console.log(`Failed to insert the items ${err}`);
}else {
console.log('Success inserting items')
}
})
res.redirect('/')
}else {
res.render("list", {listTitle: "Today", listItems: itemLog});
}
});
})
app.get('/:custom', (req, res) => {
const customName = req.params.custom;
List.findOne({name: customName}, (err, suc) => {
if (err){
console.log(`DOES NOT EXIST: ${err}`)
}else if(!suc){
const list = new List({
name: customName,
items: defaultItems
});
list.save()
res.redirect('/' + customName)
}else {
res.render("list", {listTitle: suc.name, listItems: suc.items})
}
})
})
app.post('/',(req, res) => {
const itemName = req.body.newItem;
const listName = req.body.btList;
const item = new Item({
name: itemName
});
if (listName === "Today") {
item.save().then(() => {
console.log('SUCCESSFULLY SAVED')
})
res.redirect('/')
}else {
List.findOne({name: listName}, (err, suc) => {
if(err){
console.log('THERE IS AN ERROR')
}else {
suc.items.push(item);
suc.save();
res.redirect('/' + listName)
}
})
}
})
app.post('/delete', (req, res) => {
const checkedId = req.body.checkbox;
Item.findByIdAndRemove(checkedId, (err) => {
if (err) {
console.log(`FAILED TO DELETE: ${err}`)
}else {
console.log('SUCCESSFULLY DELETED')
res.redirect('/')
}
})
})
const port = 3000
app.listen(port, () => {
console.log(`Running: http://localhost:${port}/`)
})