crud-controller.js 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. const { Op } = require('sequelize')
  2. const crudController = ({
  3. Type
  4. }) => ({
  5. list: async (req, res) => {
  6. const data = (await Type.findAll()).map(d => d.sanitize ? d.sanitize() : d)
  7. res.status(200).send(data && data.sanitize ? data.sanitize() : data)
  8. },
  9. create: async (req, res) => {
  10. const data = (await Type.create(req.body))
  11. res.status(200).send(data && data.sanitize ? data.sanitize() : data)
  12. },
  13. read: async (req, res) => {
  14. const data = (await Type.findOne({where: {id: req.params.id}}))
  15. res.status(200).send(data && data.sanitize ? data.sanitize() : data)
  16. },
  17. update: async (req, res) => {
  18. const data = (await Type.update(req.body, { where: { id: req.params.id } }))
  19. res.status(200).send(data && data.sanitize ? data.sanitize() : data)
  20. },
  21. delete: async (req, res) => {
  22. const data = (await Type.destroy({ where: { id: req.params.id } }))
  23. res.status(204).end()
  24. },
  25. trash: async (req, res) => {
  26. const data = (await Type.findAll({
  27. model: Type,
  28. paranoid: false,
  29. where: {
  30. deletedAt: { [Op.ne]: null }
  31. }
  32. }))
  33. res.status(200).send(data && data.sanitize ? data.sanitize() : data)
  34. },
  35. undelete: async (req, res) => {
  36. const data = (await Type.update({ deletedAt: null }, {
  37. paranoid: false,
  38. where: { id: req.params.id }
  39. }))
  40. res.status(200).send(data && data.sanitize ? data.sanitize() : data)
  41. }
  42. // TODO: Create, Read, Update, Delete
  43. })
  44. module.exports = crudController