index.js 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. const app = require('../../app')
  2. const { pascal, camel, param } = require('change-case')
  3. const plural = require('plural')
  4. const list = require('./list')
  5. const details = require('./details')
  6. const crudPages = ({
  7. typeName,
  8. typePlural,
  9. camelName,
  10. camelPlural,
  11. paramName,
  12. paramPlural,
  13. apiPrefix,
  14. appPrefix,
  15. columns
  16. }) => {
  17. if (!typeName) throw new Error('typeName is required')
  18. if (typeName !== pascal(typeName)) throw new Error('typeName should be PascalCased')
  19. if (!typePlural) typePlural = plural(typeName)
  20. if (typePlural !== pascal(typePlural)) throw new Error('typePlural should be PascalCased')
  21. if (!camelName) camelName = camel(typeName)
  22. if (camelName !== camel(camelName)) throw new Error('camelName should be camelCased')
  23. if (!camelPlural) camelPlural = plural(camelName)
  24. if (camelPlural !== camel(camelPlural)) throw new Error('camelPlural should be camelCased')
  25. if (!paramName) paramName = param(typeName)
  26. if (paramName !== param(paramName)) throw new Error('paramName should be param-cased')
  27. if (!paramPlural) paramPlural = plural(paramName)
  28. if (paramPlural !== param(paramPlural)) throw new Error('paramPlural should be param-cased')
  29. if (!apiPrefix) apiPrefix = `/api/${paramPlural}`
  30. if (!appPrefix) appPrefix = `/${paramPlural}`
  31. columns = columns.map(column => Object.assign({}, column, {
  32. camelName: column.camelName || camel(column.fieldName)
  33. }))
  34. const listComponentName = `app${typePlural}List`
  35. const listComponentTag = `app-${paramName}-list`
  36. const listPageComponentName = `app${typePlural}Page`
  37. const listPageComponentTag = `app-${paramPlural}-page`
  38. const args = { typeName, typePlural, camelName, camelPlural, paramName, paramPlural, apiPrefix, appPrefix, columns }
  39. list(args)
  40. details(args)
  41. }
  42. // TODO: Create Read Update Delete pages...
  43. module.exports = crudPages