mirror of
https://github.com/KevinMidboe/planetposen.git
synced 2025-10-29 17:50:32 +00:00
Server handles creating and fetching products and their variations. Models are saved to mongo using mongoose. STILL PRETTY BARE BONES!
54 lines
1.1 KiB
JavaScript
54 lines
1.1 KiB
JavaScript
const Products = require('src/products.js')
|
|
const products = new Products();
|
|
|
|
// HELPERS
|
|
const handleError = (error, res) => {
|
|
const { message, status, success } = error;
|
|
|
|
return res.status(status || 500).send({
|
|
success: success || false,
|
|
message: message || 'Unable to find product.'
|
|
})
|
|
}
|
|
|
|
const handleReturnProduct = (product, res) => {
|
|
return res.send({
|
|
success: true,
|
|
product
|
|
})
|
|
}
|
|
|
|
// ROUTES
|
|
const allProducts = (req, res) => {
|
|
return products.allProducts()
|
|
.then(products => res.json(products))
|
|
}
|
|
|
|
const productById = (req, res) => {
|
|
const { id } = req.params;
|
|
|
|
if (id != null) {
|
|
return products.getById(id)
|
|
.then(product => handleReturnProduct(product, res))
|
|
.catch(err => handleError(err, res))
|
|
} else {
|
|
return res.status(422).send({
|
|
success: true,
|
|
message: 'Id must be number. Invalid request.'
|
|
})
|
|
}
|
|
}
|
|
|
|
const addNewProduct = (req, res) => {
|
|
const { product } = req.body;
|
|
|
|
return products.saveNewProduct(product)
|
|
.then(resp => res.send(resp))
|
|
}
|
|
|
|
module.exports = {
|
|
allProducts,
|
|
productById,
|
|
addNewProduct
|
|
};
|