routes.js 1.6 KB

12345678910111213141516171819202122232425262728
  1. const defaults = require('./defaults')
  2. const asyncHandler = require('express-async-handler')
  3. const {verify, permissions} = require('../controllers/auth')
  4. module.exports = (opts) => {
  5. opts = defaults(opts)
  6. const { app, controller } = opts
  7. const TYPE_CREATE = `${opts.constantName}_CREATE`
  8. const TYPE_READ = `${opts.constantName}_READ`
  9. const TYPE_UPDATE = `${opts.constantName}_UPDATE`
  10. const TYPE_DELETE = `${opts.constantName}_DELETE`
  11. const TYPE_UNDELETE = `${opts.constantName}_UNDELETE`
  12. permissions.register(TYPE_CREATE)
  13. permissions.register(TYPE_READ)
  14. permissions.register(TYPE_UPDATE)
  15. permissions.register(TYPE_DELETE)
  16. permissions.register(TYPE_UNDELETE)
  17. if (controller.list) app.get(`/api/${opts.paramPlural}`, verify(TYPE_READ), asyncHandler(controller.list))
  18. if (controller.create) app.post(`/api/${opts.paramPlural}`, verify(TYPE_CREATE), asyncHandler(controller.create))
  19. if (controller.trash) app.get(`/api/${opts.paramPlural}/trash`, verify(TYPE_UNDELETE), asyncHandler(controller.trash))
  20. if (controller.read) app.get(`/api/${opts.paramPlural}/:${opts.routeParam}`, verify(TYPE_READ), asyncHandler(controller.read))
  21. if (controller.update) app.patch(`/api/${opts.paramPlural}/:${opts.routeParam}`, verify(TYPE_UPDATE), asyncHandler(controller.update))
  22. if (controller.delete) app.delete(`/api/${opts.paramPlural}/:${opts.routeParam}`, verify(TYPE_DELETE), asyncHandler(controller.delete))
  23. if (controller.undelete) app.delete(`/api/${opts.paramPlural}/trash/:${opts.routeParam}`, verify(TYPE_UNDELETE), asyncHandler(controller.undelete))
  24. console.log(`crud: /api/${opts.paramPlural}`)
  25. }