-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcontrollers.js
88 lines (80 loc) · 1.71 KB
/
controllers.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
const mime = require("mime")
const todos = require("./todos")
function getTodos(req, res) {
res.writeHead(200, { "Content-Type": mime.getType("json") })
const todosList = Object.keys(todos).reduce(
(todosAcc, todo) => [...todosAcc, todos[todo]],
[]
)
res.send(JSON.stringify(todosList))
}
function getTodo(req, res) {
const id = parseInt(req.params.id)
const todo = todos[id]
if (!todo) {
res.writeHead(404)
res.end()
} else {
res.writeHead(200, { "Content-Type": mime.getType("json") })
res.send(JSON.stringify(todo))
}
}
function postTodo(req, res) {
const id = Object.keys(todos).length + 1
const todo = {
id,
completed: false,
...req.body,
}
todos[id] = todo
res.writeHead(201, { "Content-Type": mime.getType("json") })
res.send(JSON.stringify(todo))
}
function updateTodo(req, res) {
const id = parseInt(req.params.id)
const todo = todos[id]
if (!todo) {
res.writeHead(400)
res.end()
} else {
todos[id] = {
...todos[id],
...req.body,
}
res.writeHead(200, { "Content-Type": mime.getType("json") })
res.send(JSON.stringify(todos[id]))
}
}
function deleteTodo(req, res) {
const id = parseInt(req.params.id)
const todo = todos[id]
if (!todo) {
res.writeHead(400)
res.end()
} else {
delete todos[id]
res.writeHead(204)
}
}
function uploadFile(req, res) {
if (!res.uploadedFileName) {
res.writeHead(400)
} else {
res.writeHead(200, {
"Content-Type": mime.getType("json"),
})
res.send(
JSON.stringify({
message: "Uploaded the file successfully!",
})
)
}
}
module.exports = {
getTodos,
getTodo,
postTodo,
updateTodo,
deleteTodo,
uploadFile,
}