-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
155 lines (133 loc) · 3.53 KB
/
index.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
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
const express = require("express");
const connection = require("knex")({
client: "mysql2",
connection: {
host: "localhost",
user: "root",
password: "12345",
database: "school",
},
});
const app = express();
app.use(express.json());
const PORT = process.env.PORT || 3010;
const students = [];
const classroom = [];
// Get all student
app.get("/students", async (req, res) => {
const data = await connection.raw("SELECT * FROM classroom");
const classRoomList = data[0];
return { id: v.id, name: v.classroom_name, year: v.classroom_year };
});
//get all class room
app.get("/classrooms", async (req, res) => {
const data = await connection.raw(
"SELECT classroom.*, COUNT(student.id) AS total_student FROM classroom INNER JOIN student ON classroom.id = student.classroom_id GROUP BY classroom.id"
);
const classRoomList = data[0];
return res.json(
classRoomList.map(function (v) {
return {
id: v.id,
name: v.classroom_name,
year: v.classroom_year,
total_student: v.total_student,
};
})
);
});
// Add students
app.post("/student", async (req, res) => {
await connection.raw(
"INSERT INTO student(student_name,age) VALUES (?,?)"[
(req.body.name, req.body.age)
]
);
return res.json({ success: true });
});
//Add Classroom
app.post("/classroom", async (req, res) => {
await connection.raw(
"INSERT INTO classroom(classroom_name, classroom_year) VALUES(?, ?)",
[req.body.name, req.body.year]
);
return res.json({ success: true });
});
//Delete
app.post("/classroom/:id", async (req, res) => {
await connection
.table("classroom")
.update({
classroom_name: req.body.name,
classroom_year: req.body.year,
})
.where({ id: req.params.id });
return res.json({ success: true });
});
//Delete Student SQL
app.post("/classroom/:id", async (req, res) => {
await connection.raw(
"UPDATE classroom SET classroom_name = :name, classroom_year = :year WHERE id = :id",
{
name: req.body.name,
year: req.body.year,
id: req.params.id,
}
);
});
// Delete student
app.delete("/student/:id", async (req, res) => {
await connection.raw("DELETE FROM student WHERE id = :id", {
id: req.params.id,
});
res.json({ success: true });
});
app.delete("/classroom/:id", async (req, res) => {
await connection.raw(
"DELETE classroom,student FROM classroom INNER JOIN student ON classroom.id = student.classroom_id WHERE classroom.id = :id",
{
id: req.params.id,
}
);
console.log("Deleted Row sucessfully");
res.json({ success: true });
});
app.listen(PORT, () => console.log("listening on port" + PORT));
// Homework
// - Add/remove classroom
// - Add/remove student
// Next Step
// - Work with database
// - Add student to classroom
// year
// name
// id
// year
// name
// student_coount (INNER JOIN, GROUP BY)
// Give ability to read JSON body
// - Get some parameter
// - Parameters
// - JSON Body
// - Understand METHOD meaning
// - GET
// - POST
// - DELETE
// app.get('/hello/:id', (req, res) => {
// return res.json({
// message: "This is hello world " + req.params.id
// })
// })
// Map Function
// a.map(x => { return ... });
// Spreading Operation
// {...a, gender: 'Male'}
//Code for Update using Knex OTM
// await connection.raw(
// "UPDATE classroom SET classroom_name = :name, classroom_year = :year WHERE id = :id",
// {
// name: req.body.name,
// year: req.body.year,
// id: req.params.id,
// }
// );