const { ObjectId } = require('mongoose').Types; const _ = require('lodash'); const getModelTypeMock = (type) => { let obj = {}; switch (type) { case 'String': case 'Boolean': obj.type = _.lowerCase(type); break; case 'Number': obj.type = _.lowerCase(type); obj.mock = 0; break; case 'Money': obj.type = 'integer'; obj.mock = 1.1; break; case 'Object': obj.type = 'object'; obj.mock = {}; break; case 'Array': obj.type = 'array'; obj.mock = []; break; case 'ObjectId': obj.type = 'string'; obj.mock = ObjectId().toString(); break; case 'Secret': obj.type = 'string'; obj.mock = 'secret'; break; default: break; } return obj; }; module.exports = (tables) => { const result = {}; for (const t of tables) { const { name, columns = [] } = t; const schema = { type: 'object' }; const properties = {}; for (const c of columns) { const { zh, type: ot, title } = c; const obj = {}; const { type, mock } = getModelTypeMock(ot); obj['type'] = type; obj['title'] = zh; if (mock) obj['mock'] = { mock }; Object.assign(properties, { [title]: obj }); } schema.properties = properties; result[name] = schema; } return result; };