util.js 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. 'use strict';
  2. const Controller = require('egg').Controller;
  3. const { CrudController } = require('naf-framework-mongoose-free/lib/controller');
  4. const assert = require('assert');
  5. const _ = require('lodash');
  6. //
  7. class UtilController extends Controller {
  8. constructor(ctx) {
  9. super(ctx);
  10. this.service = this.ctx.service.util;
  11. }
  12. async getConfig() {
  13. if (process.env.NODE_ENV !== 'development') {
  14. this.ctx.fail(-1, '无法在非开发环境使用该接口');
  15. return;
  16. }
  17. let { index, model } = this.ctx.query;
  18. assert(model, '缺少model');
  19. index = _.upperFirst(_.camelCase(index));
  20. model = _.upperFirst(_.camelCase(model));
  21. try {
  22. const mr = this.ctx.model[index][model];
  23. assert(mr, '未找到model信息');
  24. const sch = mr.schema.obj;
  25. const cols = Object.keys(sch);
  26. const q = { 'meta.createdAt@start': 'meta.createdAt@start', 'meta.createdAt@end': 'meta.createdAt@end' };
  27. for (const k in cols) {
  28. q[`${cols[k]}`] = cols[k];
  29. }
  30. const obj = {
  31. create: { requestBody: cols },
  32. destroy: {
  33. params: [ '!id' ],
  34. service: 'delete',
  35. },
  36. update: {
  37. params: [ '!id' ],
  38. requestBody: cols,
  39. },
  40. show: {
  41. parameters: {
  42. params: [ '!id' ],
  43. },
  44. service: 'fetch',
  45. },
  46. index: {
  47. parameters: {
  48. query: q,
  49. },
  50. service: 'query',
  51. options: {
  52. query: [ 'skip', 'limit' ],
  53. sort: [ 'meta.createdAt' ],
  54. desc: true,
  55. count: true,
  56. },
  57. },
  58. };
  59. // this.ctx.ok({ data: JSON.parse(JSON.stringify(obj), 1) });
  60. this.ctx.body = `module.exports = ${JSON.stringify(obj, null, 2)}`;
  61. } catch (error) {
  62. this.ctx.fail(-1, '获取config失败');
  63. }
  64. }
  65. }
  66. module.exports = CrudController(UtilController, {});