'use strict'; const Controller = require('egg').Controller; const { CrudController } = require('naf-framework-mongoose-free/lib/controller'); const assert = require('assert'); const _ = require('lodash'); // class UtilController extends Controller { constructor(ctx) { super(ctx); this.service = this.ctx.service.util; } async getConfig() { if (process.env.NODE_ENV !== 'development') { this.ctx.fail(-1, '无法在非开发环境使用该接口'); return; } let { index, model } = this.ctx.query; assert(model, '缺少model'); index = _.upperFirst(_.camelCase(index)); model = _.upperFirst(_.camelCase(model)); try { const mr = this.ctx.model[index][model]; assert(mr, '未找到model信息'); const sch = mr.schema.obj; const cols = Object.keys(sch); const q = { 'meta.createdAt@start': 'meta.createdAt@start', 'meta.createdAt@end': 'meta.createdAt@end' }; for (const k in cols) { q[`${cols[k]}`] = cols[k]; } const obj = { create: { requestBody: cols }, destroy: { params: [ '!id' ], service: 'delete', }, update: { params: [ '!id' ], requestBody: cols, }, show: { parameters: { params: [ '!id' ], }, service: 'fetch', }, index: { parameters: { query: q, }, service: 'query', options: { query: [ 'skip', 'limit' ], sort: [ 'meta.createdAt' ], desc: true, count: true, }, }, }; // this.ctx.ok({ data: JSON.parse(JSON.stringify(obj), 1) }); this.ctx.body = `module.exports = ${JSON.stringify(obj, null, 2)}`; } catch (error) { this.ctx.fail(-1, '获取config失败'); } } } module.exports = CrudController(UtilController, {});