| 1234567891011121314151617181920212223242526272829303132333435 |
- const { pascal, camel, param } = require('change-case')
- const plural = require('plural')
- const asyncHandler = require('express-async-handler')
- module.exports = ({
- app,
- controller,
- typeName,
- typePlural,
- camelName,
- camelPlural,
- paramName,
- paramPlural,
- apiPrefix
- }) => {
- if (!typeName) throw new Error('typeName is required')
- if (typeName !== pascal(typeName)) throw new Error('typeName should be PascalCased')
- if (!typePlural) typePlural = plural(typeName)
- if (typePlural !== pascal(typePlural)) throw new Error('typePlural should be PascalCased')
- if (!camelName) camelName = camel(typeName)
- if (camelName !== camel(camelName)) throw new Error('camelName should be camelCased')
- if (!camelPlural) camelPlural = plural(camelName)
- if (camelPlural !== camel(camelPlural)) throw new Error('camelPlural should be camelCased')
- if (!paramName) paramName = param(typeName)
- if (paramName !== camel(paramName)) throw new Error('paramName should be param-cased')
- if (!paramPlural) paramPlural = plural(paramName)
- if (paramPlural !== camel(paramPlural)) throw new Error('paramPlural should be param-cased')
- if (apiPrefix) apiPrefix = `/${paramPlural}`
- if (controller.list) app.get(`/api/${paramPlural}`, asyncHandler(controller.list))
- if (controller.create) app.post(`/api/${paramPlural}`, asyncHandler(controller.create))
- if (controller.read) app.get(`/api/${paramPlural}/:id`, asyncHandler(controller.read))
- if (controller.update) app.put(`/api/${paramPlural}/:id`, asyncHandler(controller.update))
- if (controller.delete) app.delete(`/api/${paramPlural}/:id`, asyncHandler(controller.delete))
- }
|