UNPKG

teste-store-api

Version:
87 lines (79 loc) 2.63 kB
const nedb = require(`nedb-promise`); const express = require(`express`); const db = nedb(`banco.db`); db.loadDatabase(); const router = express.Router(); // Buscar todos os produtos router.get(`/`, async (req, res) => { try { const produto = await db.find({}); if (!produto || !produto.length) { return res.status(404).json( { message: `Nenhum produto encontrado.`}); } res.send(produto); } catch (error) { res.status(500).end(); } }); // Buscar por ID router.get(`/:id`, async (req, res) => { try { const produto = await db.find({ _id: req.params.id}); if (!produto || !produto.length) { return res.status(404).json( { message: `Nenhum produto encontrado.`}); } res.send(produto); } catch (error) { res.status(500).end(); } }); // Criar produtos router.post(`/`, async (req, res) => { const produto = req.body; try { const exists = await db.find({ codigo: produto.codigo}); if(exists && exists.length > 0) { return res.status(409).json({message: `Produto já existe.`}); } const novo = await db.insert(produto); res.status(201).json(novo); } catch(error) { res.status(500).end(); } }); // Atualizar produto router.put(`/:id`, async (req,res) => { try { const exists = await db.find({ _id: req.params.id }); if(!exists || exists.length === 0) { return res.status(404).json({message: `Produto não encontrado.`}); } const atualizado = await db.update( { _id: req.params.id}, req.body); if(atualizado) { const produto = await db.find({ _id: req.params.id }); res.json(produto); } else { res.status(400).json({ message: `Não foi possível atualizar o produto.`}); } } catch(error) { console.error(error); res.status(500).end(); } }); // Remover produto router.delete(`/:id`, async (req, res) => { try { const exists = await db.find({ _id: req.params.id }); if(!exists || exists.length === 0) { return res.status(404).json({message: `Produto não existe.`}); } const removido = await db.remove({ _id: req.params.id }); if(!removido) { return res.status(400).json( { message: `Não foi possível remover o produto.`}); } res.json({ message: `Produto removido.`}); } catch (error) { res.status(500).json( { message: `Não foi possível remover o produto.`}); } }); module.exports = router;