fruits.js 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. 'use strict';
  2. const logger = require('../../logger.js');
  3. const express = require('express');
  4. /* eslint new-cap: "warn" */
  5. const router = express.Router();
  6. const validations = require('../validations');
  7. const fruits = require('../api/fruits');
  8. router.get('/fruits/:id', (request, response) => {
  9. const { id } = request.params;
  10. fruits.find(id).then(result => {
  11. if (result.rowCount === 0) {
  12. response.status(404);
  13. return response.send(`Item ${id} not found`);
  14. }
  15. return response.send(result.rows[0]);
  16. }).catch(() => {
  17. response.sendStatus(400);
  18. });
  19. });
  20. router.get('/fruits', (request, response) => {
  21. fruits.findAll().then(results => {
  22. response.send(results.rows);
  23. }).catch(error => {
  24. logger.error(error);
  25. response.sendStatus(400);
  26. });
  27. });
  28. router.post('/fruits', validations.validateCreateUpdateRequest, (request, response) => {
  29. const { name, stock } = request.body;
  30. return fruits.create(name, stock).then(result => {
  31. response.status(201);
  32. return response.send(result.rows[0]);
  33. }).catch(error => {
  34. response.status(400);
  35. response.send(error);
  36. });
  37. });
  38. router.put('/fruits/:id', validations.validateCreateUpdateRequest, (request, response) => {
  39. const { name, stock } = request.body;
  40. const { id } = request.params;
  41. fruits.update({ name, stock, id }).then(result => {
  42. if (result.rowCount === 0) {
  43. response.status(404);
  44. return response.send(`Unknown item ${id}`);
  45. }
  46. return response.sendStatus(204);
  47. }).catch(error => {
  48. response.status(400);
  49. response.send(error);
  50. });
  51. });
  52. router.delete('/fruits/:id', (request, response) => {
  53. const { id } = request.params;
  54. fruits.remove(id).then(result => {
  55. if (result.rowCount === 0) {
  56. response.status(404);
  57. return response.send(`Unknown item ${id}`);
  58. }
  59. return response.sendStatus(204);
  60. }).catch(error => {
  61. response.status(400);
  62. response.send(error);
  63. });
  64. });
  65. module.exports = router;