products.js 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. const router = require('express').Router()
  2. const Product = require('../models/product')
  3. const upload = require('../middlewares/upload-photo')
  4. router.post('/products', upload.single('photo'), async (req, res)=> {
  5. try {
  6. let product = new Product()
  7. product.title = req.body.title
  8. product.description = req.body.description
  9. product.photo = req.file.location
  10. product.stockQuantity = req.body.stockQuantity
  11. await product.save()
  12. res.json({
  13. status: true,
  14. message: 'Success saved'
  15. })
  16. } catch(err) {
  17. res.status(500).json({
  18. success: false,
  19. message: err.message
  20. })
  21. }
  22. })
  23. router.get('/products', async (req, res) => {
  24. try {
  25. let products = await Product.find()
  26. res.json({
  27. success: true,
  28. products
  29. })
  30. } catch (err) {
  31. res.status(500).json({
  32. success: false,
  33. message: err.message
  34. })
  35. }
  36. })
  37. router.get('/products/:id', async (req, res) => {
  38. try {
  39. let product = await Product.findOne( { _id: req.params.id })
  40. res.json({
  41. success: true,
  42. product
  43. })
  44. } catch (err) {
  45. res.status(500).json({
  46. success: false,
  47. message: err.message
  48. })
  49. }
  50. })
  51. router.put('/products/:id', upload.single('photo'), async (req, res) => {
  52. try {
  53. let product = await Product.findOneAndUpdate(
  54. { _id: req.params.id },
  55. {
  56. $set: {
  57. title: req.body.title,
  58. price: req.body.price,
  59. category: req.body.categoryID,
  60. description: req.body.description,
  61. photo: req.file.location,
  62. stockQuantity: req.body.stockQuantity,
  63. owner: req.body.ownerID
  64. }
  65. },
  66. { upsert: true }
  67. )
  68. res.json({
  69. success: true,
  70. updateProduct: product
  71. })
  72. } catch (err) {
  73. res.status(500).json({
  74. success: false,
  75. message: err.message
  76. })
  77. }
  78. })
  79. router.delete('/products/:id', async (req, res) => {
  80. try {
  81. let deleteProduct = await Product.findOneAndDelete( { _id: req.params.id })
  82. if (deleteProduct) {
  83. res.json({
  84. success: true,
  85. message: 'Successfully deleted'
  86. })
  87. }
  88. } catch (err) {
  89. res.status(500).json({
  90. success: false,
  91. message: err.message
  92. })
  93. }
  94. })
  95. module.exports = router