-
Notifications
You must be signed in to change notification settings - Fork 0
/
app.js
150 lines (120 loc) · 4.09 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
139
140
141
142
143
144
145
146
147
148
149
150
// Inportação do Modulo Express
const express = require('express');
// importar modulo fileupload
const fileupload = require('express-fileupload');
// Importando express-handlebars
const { engine } = require('express-handlebars');
// Inportação do Modulo MySQL2
const mysql = require('mysql2');
const fs = require('fs');
// ------------------------------------------------------------------------------ //
// inicializando a rota
const app = express();
// habilitando o oploadfile
app.use(fileupload());
// adicionar bootstrap
app.use('/bootstrap', express.static('./node_modules/bootstrap/dist'));
// adicionar css
app.use('/css', express.static('./css'));
// referenciar a pasta de imagem
app.use('/imagens', express.static('./imagens'));
// configuração do express-handlebars
app.engine('handlebars', engine());
// configuração express-handlebars
app.engine('handlebars', engine({
helpers: {
// Função auxiliar para verificar igualdade
condicionalIgualdade: function (parametro1, parametro2, options) {
return parametro1 === parametro2 ? options.fn(this) : options.inverse(this);
}
}
}));
app.set('view engine', 'handlebars');
app.set('views', './views');
// Manipulação de conexao de dados via rotas...
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
// rota padrão
app.get('/', (req, res) => {
res.render('formulario');
});
// configuração do Banco de Dados
const conexao = mysql.createConnection({
host: 'localhost',
user: 'root',
password: '123456',
database: 'projeto'
});
// rota principal
app.get('/', function (req, res) {
// sql
let sql = 'SELECT * FROM produto'
// Executar comando SQL
conexao.query(sql, function (erro, retorno) {
res.render('formulario', { produtos: retorno });
});
});
// Rota principal contendo a situação
app.get('/:situacao', function (req, res) {
// SQL
let sql = 'SELECT * FROM produto';
// Executar comando SQL
conexao.query(sql, function (erro, retorno) {
res.render('formulario', { produtos: retorno, situação: req.params.situacao });
});
});
// Teste de conexão do própio express
conexao.connect(function (erro) {
if (erro) throw erro;
console.log("Sua conexao foi realizada com sucesso!")
})
//rota de de cadastro de produtos no formulario
app.post('/cadastrar', function (req, res) {
try {
// Obter os dados que serão utiliados para o cadastro
let nome = req.body.nome;
let valor = req.body.valor;
let imagem = req.files.imagem.name;
// Validar o nome do produto e o valor
if (nome == '' || valor == '' || isNaN(valor)) {
res.redirect('/falhaCadastro');
} else {
// SQL
let sql = `INSERT INTO produto (nome, valor, imagem) VALUES ('${nome}', ${valor}, '${imagem}')`;
// Executar comando SQL
conexao.query(sql, function (erro, retorno) {
// Caso ocorra algum erro
if (erro) throw erro;
// Caso ocorra o cadastro
req.files.imagem.mv(__dirname + '/imagens/' + req.files.imagem.name);
console.log(retorno);
});
// Retornar para a rota principal
res.redirect('/okCadastro');
}
} catch (erro) {
res.redirect('/falhaCadastro');
}
});
// Rota para remover produtos
app.get('/remover/:codigo&:imagem', function (req, res) {
// tratamento de exeção
try {
let sql = `DELETE FROM produto WHERE codigo = ${req.params.codigo}`;
// executar o comando sql
conexao.query(sql, function (erro, retorno) {
// caso falhe o comando SQL
if (erro) throw erro;
// caso o comando SQl funcione
fs.unlink(__dirname + '/imagens/' + req.params.imagem, (erro_imagem) => {
console.log('Falha ao remover a imagem');
});
});
// re
res.redirect('/okRemover');
} catch (erro) {
res.redirect('/falhaRemover');
}
});
// servidor rodando na porta
app.listen(8080);