UNPKG

mongoose-management

Version:
78 lines (77 loc) 2.32 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const abstract_1 = __importDefault(require("./abstract")); /** * */ class ConverterObject extends abstract_1.default { /** * * @param column */ columnToTypes(columns) { if (columns.length === 0) { return this.converter.converterCommon.columnToTypes({ name: '', type: 'object' }); } return this.switchers(columns, 'columnToTypes'); } /** * * @param column */ columnToDefinitions(columns) { if (columns.length === 0) { return this.converter.converterCommon.columnToDefinitions({ name: '', type: 'object' }); } return this.switchers(columns, 'columnToDefinitions'); } /** * * @param columns */ columnToVirtuals(columns) { return this.switchers(columns, 'columnToVirtuals'); } /** * * @param columns * @param funcs */ switchers(columns, funcs) { const items = columns.map((column) => [ column.name, this.switcher(column, funcs).trim(), funcs === 'columnToTypes' && !column.required ? '?' : '', ]); return `{ ${items .filter((v) => v[1] !== '') .map(([k, v, r]) => `'${k}'${r}: ${v}`) .join(', ')} }`; } /** * * @param column * @param funcs */ switcher(column, funcs) { switch (column.type) { case '2dsphere': return this.converter.converter2dSphere[funcs](); case 'arrayType': return this.converter.converterArrayType[funcs](column); case 'array': return this.converter.converterArray[funcs](column); case 'object': if (!Array.isArray(column.subColumns)) { throw new Error('SubColumns are not defined!'); } return this.converter.converterObject[funcs](column.subColumns); default: return this.converter.converterCommon[funcs](column); } } } exports.default = ConverterObject;