-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathserver.js
More file actions
144 lines (119 loc) · 5.37 KB
/
server.js
File metadata and controls
144 lines (119 loc) · 5.37 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
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
const express = require('express');
const bodyParser = require('body-parser');
const cors = require('cors');
const mysql = require('mysql2');
require('dotenv').config()
const app = express();
app.use(bodyParser.json());
app.use(cors())
const connection = mysql.createConnection(process.env.DATABASE_URL)
app.get('/', (req, res) => {
console.log("Connection API Success")
res.send("Main Path Work : Connection Success");
});
app.get('/games', (req, res) => {
const updateSql = "UPDATE games SET score = (SELECT AVG(vote) FROM games_comments WHERE games_comments.game_id = games.game_id) WHERE EXISTS (SELECT 1 FROM games_comments WHERE games_comments.game_id = games.game_id)";
connection.query(updateSql, (updateErr, updateResults) => {
if (updateErr) {
console.error(updateErr);
return res.status(500).json({ status: 'error', message: 'Internal Server Error' });
}
let sql;
if (req.query.game_id) {
const game_id = req.query.game_id;
sql = "SELECT * FROM games WHERE game_id = ?";
connection.query(sql, [game_id], (err, games) => {
if (err) {
console.error(err);
return res.status(500).json({ status: 'error', message: 'Internal Server Error' });
}
processComments(games, res);
});
} else {
sql = "SELECT DISTINCT * FROM games";
connection.query(sql, (err, games) => {
if (err) {
console.error(err);
return res.status(500).json({ status: 'error', message: 'Internal Server Error' });
}
processComments(games, res);
});
}
});
});
function processComments(games, res) {
const results = [];
function processGame(index) {
if (index === games.length) {
if (results.length === 0) {
return res.status(404).json({ status: 'ข้อผิดพลาด', message: 'ไม่พบข้อมูลสำหรับ game_id ที่ระบุ' });
}
res.json(results);
return;
}
const game = games[index];
const game_id = game.game_id;
const sqlComment = "SELECT * FROM games_comments WHERE game_id = ?";
connection.query(sqlComment, [game_id], (err, comments) => {
if (err) {
console.error(err);
return res.status(500).json({ status: 'error', message: 'Internal Server Error' });
}
const comment_arr = comments.map(comment => ({
comment_id: comment.comment_id,
comment_text: comment.comment,
vote: comment.vote,
username_text: comment.username
}));
game.comment = comment_arr;
results.push(game);
processGame(index + 1);
});
}
processGame(0);
}
app.put('/games/:game_id', (req, res) => {
const { game_id, game_name, game_description, img, game_type } = req.body;
const sql = "UPDATE games SET game_name=?, game_description=?, img=?, game_type=? WHERE game_id=?";
connection.query(sql, [game_name, game_description, img, game_type, game_id], (err) => {
if (err) {
console.error(err);
return res.status(500).json({ status: 'error', message: 'Error updating record' });
}
res.json({ status: 'success', message: 'Record updated successfully !' });
});
});
app.post('/games', (req, res) => {
const { comment, game_id, vote, username, game_name, game_description, img, game_type } = req.body;
if (game_id === undefined) {
const InsertGames = "INSERT INTO games (game_name, game_description, img, game_type) VALUES (?, ?, ?, ?)";
connection.query(InsertGames, [game_name, game_description, img, game_type], (err) => {
if (err) {
console.error(err);
return res.status(500).json({ status: 'error', message: 'Error เพิ่มเกม ไม่เข้า' });
}
res.json({ status: 'success', message: 'เพิ่มเกมแล้ว' });
});
} else {
const commentSql = "INSERT INTO games_comments (game_id, comment, vote, username) VALUES (?, ?, ?, ?)";
connection.query(commentSql, [game_id, comment, vote, username], (err) => {
if (err) {
console.error(err);
return res.status(500).json({ status: 'error', message: 'Error เพิ่มความคิดเห็น ไม่เข้า' });
}
res.json({ status: 'success', message: 'เพิ่มความคิดเห็นแล้ว' });
});
}
});
app.delete('/games/:game_id', (req, res, next) => {
const game_id = req.params.game_id;
const sql = "DELETE FROM games WHERE game_id = ?";
connection.query(sql, [game_id], (err) => {
if (err) {
console.error(err);
return res.status(500).json({ status: 'error', message: 'Error deleting record' });
}
res.json({ status: 'success', message: 'Record deleted successfully' });
});
});
app.listen(process.env.PORT || 80);