diff --git a/src/generate/template/egg/user.text b/src/generate/template/egg/user.text index 2d5444a..34c7e21 100644 --- a/src/generate/template/egg/user.text +++ b/src/generate/template/egg/user.text @@ -1,3 +1,5 @@ +/* eslint-disable*/ + 'use strict'; module.exports = app => { diff --git a/src/index.js b/src/index.js index 9b75140..eb356e6 100644 --- a/src/index.js +++ b/src/index.js @@ -14,6 +14,7 @@ class Automate { type: 'js', // Which code style want to generate, supported: js/ts/egg/midway. Default is `js`. camelCase: false, // Model name camel case. Default is false. fileNameCamelCase: false, // Model file name camel case. Default is false. + modalNameSuffix: true, // Model name 'Modal' suffix. Default is true. dir: 'models', // What directory to place the models. Default is `models`. typesDir: null, // What directory to place the models' definitions (for typescript), default is the same with dir. emptyDir: false, // Remove all files in `dir` and `typesDir` directories before generate models. @@ -34,6 +35,7 @@ class Automate { assert(supportTypes.includes(this.options.type), 'type not support'); assert(_.isBoolean(this.options.camelCase), 'Invalid params camelCase'); assert(_.isBoolean(this.options.fileNameCamelCase), 'Invalid params fileNameCamelCase'); + assert(_.isBoolean(this.options.modalNameSuffix), 'Invalid params modalNameSuffix'); assert(_.isString(this.options.dir), 'Invalid params dir'); assert(_.isString(this.options.typesDir), 'Invalid params typesDir'); assert(_.isBoolean(this.options.emptyDir), 'Invalid params cleanDir'); @@ -119,6 +121,7 @@ class Automate { skipTables, camelCase, fileNameCamelCase, + modalNameSuffix, } = this.options; const allTables = await this.getTables({ tables, @@ -127,6 +130,7 @@ class Automate { const definitions = getModelDefinitions(allTables, { camelCase, fileNameCamelCase, + modalNameSuffix, dialect: this.dbOptions.dialect, }); debug('get model definitions'); diff --git a/src/util/definition.js b/src/util/definition.js index 26f0730..4e0c1d8 100644 --- a/src/util/definition.js +++ b/src/util/definition.js @@ -6,8 +6,10 @@ function getFieldName(fieldName, camelCase) { return camelCase ? _.camelCase(fieldName) : fieldName; } -function getModelName(tableName, camelCase) { - const modelString = camelCase ? 'Model' : '_model'; +function getModelName(tableName, camelCase, modalNameSuffix) { + const modelString = modalNameSuffix ? + camelCase ? 'Model' : '_model' + : ''; return `${getFieldName(tableName, camelCase)}${modelString}`; } @@ -195,7 +197,7 @@ function getDataType(field) { /** * Process a table - * @param {object} params { structures, allIndexes, foreignKeys, options: { camelCase, dialect } } + * @param {object} params { structures, allIndexes, foreignKeys, options: { camelCase, dialect, modalNameSuffix } } * @return {object} { attributes: { filed: { attribute } }, indexes: [{ name, type, fields }] } */ function processTable({ @@ -204,7 +206,7 @@ function processTable({ foreignKeys, options, }) { - const { camelCase, dialect } = options; + const { camelCase, dialect, modalNameSuffix } = options; const attributes = {}; _.forEach(structures, (structure, fieldName) => { const key = getFieldName(fieldName, camelCase); @@ -245,7 +247,7 @@ function processTable({ const filed = getFieldName(columnName, camelCase); attributes[filed].references = { key: referencedColumnName, - model: getModelName(referencedTableName, camelCase), + model: getModelName(referencedTableName, camelCase, modalNameSuffix), }; }); @@ -255,20 +257,20 @@ function processTable({ /** * Get model definitions * @param {object} tables { structures, indexes, foreignKeys } - * @param {object} options { camelCase, fileNameCamelCase } + * @param {object} options { camelCase, fileNameCamelCase, dialect, modalNameSuffix } * @return {object} [{ modelName, modelFileName, tableName, attributes, indexes }] */ function getModelDefinitions(tables, options) { - const { camelCase, fileNameCamelCase, dialect } = options || {}; + const { camelCase, fileNameCamelCase, dialect, modalNameSuffix } = options || {}; const definitions = _.map(tables, (table, tableName) => { const { attributes, indexes } = processTable({ structures: table.structures, allIndexes: table.indexes, foreignKeys: table.foreignKeys, - options: { camelCase, dialect }, + options: { camelCase, dialect, modalNameSuffix }, }); - const modelName = getModelName(tableName, camelCase); + const modelName = getModelName(tableName, camelCase, modalNameSuffix); const modelFileName = getFieldName(tableName, fileNameCamelCase); return { modelName,