UNPKG

hades-cli

Version:
98 lines (97 loc) 4.08 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getFakerHelperParams = exports.fakerByPropertyType = exports.fakerHelper = void 0; const faker = require("faker"); const dayjs = require("dayjs"); function fakerHelper(command, params = []) { switch (command) { case 'datatype.uuid': if (params.length > 0 && typeof params[0] === 'number' && params[0] !== 36) return faker.random.alphaNumeric(params[0]); return faker.datatype.uuid(); case 'datatype.boolean': return faker.datatype.boolean(); case 'datatype.json': return faker.datatype.json(); case 'random.alphaNumeric': return faker.random.alphaNumeric(...params); case 'database.column': if (params.length > 0 && typeof params[0] === 'number') return faker.random.alphaNumeric(params[0]); return faker.database.column(); case 'lorem.paragraph': if (params.length > 0 && typeof params[0] === 'number') return faker.random.alphaNumeric(params[0]); return faker.lorem.paragraph(); case 'timestamp.recent': return dayjs(faker.date.recent()).format('YYYY-MM-DD HH:mm:ss'); case 'random.number.length': return Math.floor(+(1 + '0'.repeat(params[0] - 1)) + Math.random() * +(9 + '0'.repeat(params[0] - 1))); case 'random.float.length': return !!params[0] ? Math.floor(+(1 + '0'.repeat(params[0] - 1)) + Math.random() * +(9 + '0'.repeat(params[0] - 1))) : faker.datatype.float(); default: throw new Error(` Command Faker ${command} not recognized, check FakeJs API: https://github.com/marak/Faker.js/ `); } } exports.fakerHelper = fakerHelper; function fakerByPropertyType(property, params = []) { let fakerMethod = ''; switch (property.type) { case 'id': fakerMethod = 'datatype.uuid'; break; case 'varchar': case 'char': case 'enum': case 'password': fakerMethod = 'random.alphaNumeric'; break; case 'text': fakerMethod = 'lorem.paragraph'; break; case 'boolean': fakerMethod = 'datatype.boolean'; break; case 'timestamp': fakerMethod = 'timestamp.recent'; break; case 'int': case 'int.unsigned': case 'smallint': case 'smallint.unsigned': fakerMethod = 'random.number.length'; break; case 'float': case 'decimal': fakerMethod = 'random.float.length'; break; case 'json': fakerMethod = 'datatype.json'; break; } return fakerHelper(fakerMethod, params); } exports.fakerByPropertyType = fakerByPropertyType; function getFakerHelperParams(options, property) { const parameters = []; let hasFirstParameter = false; for (let option of options) { if (!(option instanceof Object && (option.name === 'fakerProperty' || option.name === 'faker')) && // avoid add handlebars property option !== 'seed' // avoid add seed command ) { parameters.push(option); hasFirstParameter = true; } // active seed property to generate same values for this value if (option === 'seed') faker.seed(123456); } // add length or maxLength how first parameter if has not first parameter if (!hasFirstParameter && !!((property === null || property === void 0 ? void 0 : property.maxLength) ? property.maxLength : property === null || property === void 0 ? void 0 : property.length)) parameters.push((property === null || property === void 0 ? void 0 : property.maxLength) ? property.maxLength : property === null || property === void 0 ? void 0 : property.length); return parameters; } exports.getFakerHelperParams = getFakerHelperParams;