teste-store-api
Version:
87 lines (79 loc) • 2.63 kB
JavaScript
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;