| 12345678910111213141516171819202122232425262728 |
- const defaults = require('./defaults')
- const asyncHandler = require('express-async-handler')
- const {verify, permissions} = require('../controllers/auth')
- module.exports = (opts) => {
- opts = defaults(opts)
- const { app, controller } = opts
- const TYPE_CREATE = `${opts.constantName}_CREATE`
- const TYPE_READ = `${opts.constantName}_READ`
- const TYPE_UPDATE = `${opts.constantName}_UPDATE`
- const TYPE_DELETE = `${opts.constantName}_DELETE`
- const TYPE_UNDELETE = `${opts.constantName}_UNDELETE`
- permissions.register(TYPE_CREATE)
- permissions.register(TYPE_READ)
- permissions.register(TYPE_UPDATE)
- permissions.register(TYPE_DELETE)
- permissions.register(TYPE_UNDELETE)
- if (controller.list) app.get(`/api/${opts.paramPlural}`, verify(TYPE_READ), asyncHandler(controller.list))
- if (controller.create) app.post(`/api/${opts.paramPlural}`, verify(TYPE_CREATE), asyncHandler(controller.create))
- if (controller.trash) app.get(`/api/${opts.paramPlural}/trash`, verify(TYPE_UNDELETE), asyncHandler(controller.trash))
- if (controller.read) app.get(`/api/${opts.paramPlural}/:${opts.routeParam}`, verify(TYPE_READ), asyncHandler(controller.read))
- if (controller.update) app.patch(`/api/${opts.paramPlural}/:${opts.routeParam}`, verify(TYPE_UPDATE), asyncHandler(controller.update))
- if (controller.delete) app.delete(`/api/${opts.paramPlural}/:${opts.routeParam}`, verify(TYPE_DELETE), asyncHandler(controller.delete))
- if (controller.undelete) app.delete(`/api/${opts.paramPlural}/trash/:${opts.routeParam}`, verify(TYPE_UNDELETE), asyncHandler(controller.undelete))
- console.log(`crud: /api/${opts.paramPlural}`)
- }
|