From 6341f586b35ebcd5fc07390c4a4b71ba48ba791f Mon Sep 17 00:00:00 2001 From: YUAN21 <1650192445@qq.com> Date: Thu, 19 Nov 2020 11:41:10 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20=E5=A2=9E=E5=8A=A0=20modalNameSuffi?= =?UTF-8?q?x:=20true=20=E9=85=8D=E7=BD=AE=EF=BC=8C=E5=8F=AF=E7=94=9F?= =?UTF-8?q?=E6=88=90=E4=B8=8D=E5=B8=A6Model=E5=90=8E=E7=BC=80=E7=9A=84?= =?UTF-8?q?=E6=A8=A1=E5=9E=8B=E5=90=8D=E7=A7=B0=EF=BC=8C=E4=BB=A5=E7=AC=A6?= =?UTF-8?q?=E5=90=88=E4=B8=AA=E4=BA=BA=E4=BD=BF=E7=94=A8=E4=B9=A0=E6=83=AF?= =?UTF-8?q?~?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/generate/template/egg/user.text | 2 ++ src/index.js | 4 ++++ src/util/definition.js | 20 +++++++++++--------- 3 files changed, 17 insertions(+), 9 deletions(-) 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,