diff --git a/lib/migration.js b/lib/migration.js index 46f75c51..c55b68a0 100644 --- a/lib/migration.js +++ b/lib/migration.js @@ -770,10 +770,21 @@ function mixinMigration(MySQL, mysql) { const colLength = columnMetadata && columnMetadata.dataLength || prop.length || prop.limit; const colPrecision = columnMetadata && columnMetadata.dataPrecision; const colScale = columnMetadata && columnMetadata.dataScale; + let enumList = ''; + if (colType && colType === 'ENUM') { + if (prop.jsonSchema && prop.jsonSchema.enum) { + prop.jsonSchema.enum.forEach(item => { + enumList += `'${item}',`; + }); + // remove trailing comma + enumList = enumList.substring(0, enumList.length - 1); + } + } // info on setting column specific properties // i.e dataLength, dataPrecision, dataScale // https://loopback.io/doc/en/lb3/Model-definition-JSON-file.html if (colType) { + if (colType === 'ENUM') return colType + '(' + enumList + ')'; if (colLength) return colType + '(' + colLength + ')'; if (colPrecision && colScale) return colType + '(' + colPrecision + ',' + colScale + ')'; if (colPrecision) return colType + '(' + colPrecision + ')'; diff --git a/test/migration.test.js b/test/migration.test.js index 622f1e95..b7345ce7 100644 --- a/test/migration.test.js +++ b/test/migration.test.js @@ -85,6 +85,13 @@ describe('migrations', function() { Key: '', Default: null, Extra: ''}, + typings: { + Field: 'typings', + Type: "enum('A','B')", + Null: 'YES', + Key: '', + Default: null, + Extra: ''}, }); done(); }); @@ -548,9 +555,10 @@ function setup(done) { require('./init.js'); db = global.getSchema(); - + const customType = db.EnumFactory('A', 'B'); UserData = db.define('UserData', { email: {type: String, null: false, index: true}, + typings: {type: customType}, name: String, bio: Schema.Text, birthDate: Date,