-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathoscar.js
216 lines (189 loc) · 6.5 KB
/
oscar.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
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
const express = require('express');
const mysql = require('mysql');
const app = express();
//é necessário configurar o middleware express.json() para analisar o corpo da solicitação JSON.
app.use(express.json());
const port = process.env.PORT || 3000; // Defina a porta que deseja executar o seu projeto.
// Configuração do banco de dados MySQL
const db = mysql.createConnection({
host: 'localhost', // Endereço do servidor MySQL
user: 'root', // Seu nome de usuário MySQL
password: 'password', // Sua senha do MySQL
database: 'oscar_database' // Nome do banco de dados
});
// Tenta conectar o MySQL.
db.connect((err) => {
if (err) {
console.error('Erro ao conectar ao MySQL: ' + err);
return;
}
console.log('Conexão ao MySQL estabelecida'); // Sucesso
});
const tableDB = 'oscar';
// Definir os endpoints da API
// Rota para obter todos os registros
app.get('/oscar', (req, res) => {
const query = `SELECT * FROM ${tableDB}`;
db.query(query, (err, results) => {
if (err) {
console.error('Erro ao buscar registros: ' + err);
res.status(500).json({ error: 'Erro ao buscar registros' });
return;
}
res.json(results);
});
});
// Rota para obter filmes com paginação
app.get('/filmes', (req, res) => {
let { page, limit } = req.query;
page = parseInt(page);
limit = parseInt(limit);
let start = (page - 1) * limit; // Cálculo do índice de início
// Cálculo do índice de término.
// Execute a consulta SQL com a cláusula LIMIT
const query = `SELECT * FROM ${tableDB} ORDER BY id_registro DESC LIMIT ${start},${limit}`;
console.log(`LIMITE ${limit}(${typeof(limit)}) - Page: ${page}(${typeof(page)}) - Start + ${start}(${typeof(start)})`)
db.query(query, [start, limit], (err, results) => {
if (err) {
console.error('Erro ao buscar filmes: ' + err);
res.status(500).json({ error: 'Erro ao buscar filmes' });
return;
}
res.json(results);
});
});
// Rota para obter um registro por ID
app.get('/oscar/id/:id', (req, res) => {
const { id } = req.params;
const query = `SELECT * FROM ${tableDB} WHERE id_registro = ?`;
db.query(query, [id], (err, results) => {
if (err) {
console.error('Erro ao buscar registro: ' + err);
res.status(500).json({ error: 'Erro ao buscar registro' });
return;
}
if (results.length === 0) {
res.status(404).json({ error: 'Registro não encontrado' });
} else {
res.json(results[0]);
}
});
});
// Rota para obter um resgistro por nome do indicado
app.get('/oscar/nome/:name', (req, res) => {
const { name } = req.params;
const query = `SELECT * FROM ${tableDB} WHERE nome_do_indicado LIKE "%${name}%" `;
db.query(query, [name], (err, results) => {
if (err) {
console.error('Erro ao buscar registro: ' + err);
res.status(500).json({ error: 'Erro ao buscar registro' });
return;
}
if (results.length === 0) {
res.status(404).json({ error: 'Registro não encontrado' });
} else {
res.json(results);
}
});
});
// Rota para obter um registro por ano da filmagem
app.get('/oscar/ano_filmagem/:ano', (req, res) => {
const { ano } = req.params;
const query = `SELECT * FROM ${tableDB} WHERE ano_filmagem = ?`;
db.query(query, [ano], (err, results) => {
if (err) {
console.error('Erro ao buscar registro: ' + err);
res.status(500).json({ error: 'Erro ao buscar registro' });
return;
}
if (results.length === 0) {
res.status(404).json({ error: 'Registro não encontrado' });
} else {
res.json(results);
}
});
});
// Rota para obter um registro por edicao da cerimonia
app.get('/oscar/cerimonia/:edicao', (req, res) => {
const { edicao } = req.params;
const query = `SELECT * FROM ${tableDB} WHERE edicao_cerimonia = ?`;
db.query(query, [edicao], (err, results) => {
if (err) {
console.error('Erro ao buscar registro: ' + err);
res.status(500).json({ error: 'Erro ao buscar registro' });
return;
}
if (results.length === 0) {
res.status(404).json({ error: 'Registro não encontrado' });
} else {
res.json(results);
}
});
});
// Rota para obter um registro por edicao da cerimonia
app.get('/oscar/filme/:name', (req, res) => {
const { name } = req.params;
const query = `SELECT * FROM ${tableDB} WHERE nome_filme LIKE "%${name}%"`;
db.query(query, [name], (err, results) => {
if (err) {
console.error('Erro ao buscar registro: ' + err);
res.status(500).json({ error: 'Erro ao buscar registro' });
return;
}
if (results.length === 0) {
res.status(404).json({ error: 'Registro não encontrado' });
} else {
res.json(results);
}
});
});
// Rota para obter um registro por categoria
app.get('/oscar/categoria/:name', (req, res) => {
const { name } = req.params;
const query = `SELECT * FROM ${tableDB} WHERE categoria LIKE "%${name}%"`;
db.query(query, [name], (err, results) => {
if (err) {
console.error('Erro ao buscar registro: ' + err);
res.status(500).json({ error: 'Erro ao buscar registro' });
return;
}
if (results.length === 0) {
res.status(404).json({ error: 'Registro não encontrado' });
} else {
res.json(results);
}
});
});
// Rota para obter um registro por vencedor
app.get('/oscar/vencedor/:vencedor', (req, res) => {
const { vencedor } = req.params;
const query = `SELECT * FROM ${tableDB} WHERE vencedor LIKE "%${vencedor}%"`;
db.query(query, [vencedor], (err, results) => {
if (err) {
console.error('Erro ao buscar registro: ' + err);
res.status(500).json({ error: 'Erro ao buscar registro' });
return;
}
if (results.length === 0) {
res.status(404).json({ error: 'Registro não encontrado' });
} else {
res.json(results);
}
});
});
// Rota para enviar dados para a API
app.post('/enviar-dados', (req, res) => {
const { nome_do_indicado, nome_filme } = req.body;
// Faça o que você deseja com os dados, por exemplo, salvar no banco de dados
// Você pode retornar os dados para a página HTML se desejar
res.json({ nome_do_indicado, nome_filme });
});
// Configurar o Express para servir arquivos estáticos
app.use(express.static('public'));
// Finalmente, iniciamos o servidor e aplicação estará disponível.
app.listen(port, () => {
console.log(`Servidor Express rodando na porta ${port}.
Acesso a API através de http://localhost:${port}/${tableDB}
Acesso a interface através do endereço de http://localhost:${port}/`
);
});