87 lines
2.3 KiB
JavaScript
87 lines
2.3 KiB
JavaScript
const router = require('express').Router();
|
|
const rescue = require('express-rescue');
|
|
const products = require('../services/products');
|
|
|
|
const CREATED = 201;
|
|
const OK = 200;
|
|
|
|
router.get('/', rescue(async (_req, res) => {
|
|
const result = await products.getAll();
|
|
res.status(result.status).json({ products: [...result.productS] });
|
|
}));
|
|
|
|
router.get('/:id', async (req, res) => {
|
|
const { id } = req.params;
|
|
|
|
const result = await products.getById(id);
|
|
|
|
if (result.code) {
|
|
return res.status(result.status).json({
|
|
err: {
|
|
code: result.code,
|
|
message: result.message,
|
|
},
|
|
});
|
|
}
|
|
|
|
const { _id, name, quantity, price, thumbnail, description } = result;
|
|
const productData = { id: _id, name, quantity, price, thumbnail, description };
|
|
|
|
res.status(OK).json(productData);
|
|
});
|
|
|
|
router.post('/', rescue(async (req, res) => {
|
|
const { name, quantity, price, thumbnail, description } = req.body;
|
|
const productData = { name, quantity, price, thumbnail, description };
|
|
const result = await products.create(productData);
|
|
|
|
if (result.code) {
|
|
return res.status(result.status).json({
|
|
err: {
|
|
code: result.code,
|
|
message: result.message,
|
|
},
|
|
});
|
|
}
|
|
|
|
res.status(CREATED).json({ _id: result, name, quantity });
|
|
}));
|
|
|
|
router.put('/:id', rescue(async (req, res) => {
|
|
const { id } = req.params;
|
|
const { name, quantity, price, thumbnail, description } = req.body;
|
|
const productData = { name, quantity, price, thumbnail, description };
|
|
|
|
const updateLog = await products.update({ id, ...productData });
|
|
|
|
if (updateLog.code) {
|
|
return res.status(updateLog.status).json({
|
|
err: {
|
|
code: updateLog.code,
|
|
message: updateLog.message,
|
|
},
|
|
});
|
|
}
|
|
res.status(OK).json({ id, name, quantity });
|
|
}));
|
|
|
|
router.delete('/:id', rescue(async (req, res) => {
|
|
const { id } = req.params;
|
|
|
|
const result = await products.deleteIt(id);
|
|
|
|
if (result.code) {
|
|
return res.status(result.status).json({
|
|
err: {
|
|
code: result.code,
|
|
message: result.message,
|
|
},
|
|
});
|
|
}
|
|
|
|
const { _id, name, quantity } = result;
|
|
|
|
res.status(OK).json({ id: _id, name, quantity });
|
|
}));
|
|
|
|
module.exports = router; |