Skip to content

Commit d8d8d5a

Browse files
committed
create router for images
1 parent 6d31c82 commit d8d8d5a

File tree

6 files changed

+108
-2
lines changed

6 files changed

+108
-2
lines changed

app.js

+2
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ const bodyParser = require('body-parser')
66
const rotaProduto = require('./routes/produtos')
77
const rotaPedido = require('./routes/pedidos')
88
const rotaUsuario = require('./routes/usuarios')
9+
const rotaImagens = require('./routes/imagens')
910

1011
app.use(morgan('dev'));
1112
app.use('/uploads', express.static('uploads'))
@@ -33,6 +34,7 @@ app.get('/', async (request, response) => {
3334
app.use('/produtos', rotaProduto);
3435
app.use('/pedidos', rotaPedido);
3536
app.use('/usuarios', rotaUsuario);
37+
app.use('/imagens', rotaImagens);
3638

3739
// Quando não encontra rota, entra aqui:
3840
app.use((req, res, next) => {

controllers/imagens-controller.js

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
const mysql = require('../mysql');
2+
3+
exports.deleteImagem = async (req, res, next ) => {
4+
try {
5+
const query = 'DELETE FROM images_produtos WHERE id_imagem = ?;'
6+
await mysql.execute(query, [ req.params.id_imagem ]);
7+
const response = {
8+
mensagem: 'Imagem removido com sucesso',
9+
request: {
10+
tipo: 'POST',
11+
descricao: 'Insere uma imagem',
12+
url: process.env.URL_API + 'produtos/' + req.body.id_produto,
13+
body: {
14+
id_produto: 'Number',
15+
imagem_produto: 'File'
16+
}
17+
}
18+
}
19+
return res.status(202).send(response);
20+
} catch (error) {
21+
return res.status(500).send({error: error})
22+
}
23+
}

controllers/produtos-controller.js

+53-1
Original file line numberDiff line numberDiff line change
@@ -130,4 +130,56 @@ exports.deleteProduto = async (req, res, next ) => {
130130
} catch (error) {
131131
return res.status(500).send({error: error})
132132
}
133-
}
133+
}
134+
135+
exports.getImagens = async (req, res, next) => {
136+
try{
137+
const query = 'SELECT * FROM images_produtos WHERE id_produto = ?;'
138+
const result = await mysql.execute(query, [req.params.id_produto]);
139+
const response = {
140+
quantidade: result.length,
141+
imagens: result.map(img => {
142+
return {
143+
id_produto: parseInt(req.params.id_produto),
144+
id_imagem: img.id_imagem,
145+
caminho: process.env.URL_API + img.caminho,
146+
/* request: {
147+
tipo: 'GET',
148+
descicao: 'Retorna os detalhes de um produto especifico',
149+
url: process.env.URL_API + 'produtos/' + img.id_produto
150+
} */
151+
}
152+
})
153+
}
154+
return res.status(200).send({ response })
155+
}catch (error){
156+
return res.status(500).send({error: error})
157+
}
158+
}
159+
160+
exports.postImagem = async (req, res, next ) => {
161+
try {
162+
console.log(req.file);
163+
const query = 'INSERT INTO images_produtos(id_produto, caminho) VALUES (?,?)'
164+
const result = await mysql.execute(query, [
165+
req.params.id_produto,
166+
req.file.path
167+
])
168+
const response = {
169+
mensagem: 'Imagem inserida com sucesso!!',
170+
imagemCriada: {
171+
id_produto: parseInt(req.params.id_produto),
172+
id_imagem: result.insertId,
173+
imagem_produto: req.file.path,
174+
request: {
175+
tipo: 'GET',
176+
descicao: 'Retorna todos as imagens',
177+
url: process.env.URL_API + 'produtos/' + req.params.id_produto + '/imagens'
178+
}
179+
}
180+
}
181+
return res.status(201).send(response);
182+
} catch (error) {
183+
return res.status(500).send({error: error})
184+
}
185+
};

ScriptBanco.sql renamed to database/db_script.sql

+10-1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ create database `bdecommerce` DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_
99

1010
-- Use DataBase
1111
use heroku_b1940cca2c26944;
12+
use bdecommerce;
1213

1314
/* ----- Create produtos table ----- */
1415
CREATE TABLE `produtos` (
@@ -72,9 +73,17 @@ describe produtos;
7273
select * from pedidos;
7374
select * from produtos;
7475
select * from usuarios;
76+
show tables;
7577

7678
INSERT INTO produtos(nome_produto, preco_produto, imagem_produto)
77-
VALUES ("Test pao",10,"https://")
79+
VALUES ("Test pao",10,"https://");
80+
/***************************************************************/
81+
create table `images_produtos` (
82+
id_imagem INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
83+
id_produto INT,
84+
caminho varchar(255),
85+
foreign key (id_produto) references produtos (id_produto)
86+
);
7887

7988

8089

routes/imagens.js

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
const express = require('express');
2+
const router = express.Router();
3+
const login = require('../middleware/login');
4+
5+
const ImagensController = require('../controllers/imagens-controller');
6+
7+
// Exclui uma imagem
8+
router.delete('/delete', login.obrigatorio,
9+
ImagensController.deleteImagem);
10+
11+
12+
module.exports = router;

routes/produtos.js

+8
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,14 @@ router.post('/', login.obrigatorio,
3737
upload.single('imagem_produto'),
3838
ProdutosController.postProduto );
3939

40+
// Images
41+
router.post('/:id_produto/imagem', login.obrigatorio,
42+
upload.single('imagem_produto'),
43+
ProdutosController.postImagem)
44+
45+
// Images
46+
router.get('/:id_produto/imagens', ProdutosController.getImagens)
47+
4048
// Retona os dados de 1 produto
4149
router.get('/:id_produto',
4250
ProdutosController.getUmProduto);

0 commit comments

Comments
 (0)