games-store-back/controllers/products.js

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;