1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- 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;
- };
|