diff --git a/lib/discovery.js b/lib/discovery.js index 6c53216b..615c54da 100644 --- a/lib/discovery.js +++ b/lib/discovery.js @@ -358,8 +358,8 @@ function mixinDiscovery(MySQL, mysql) { } return 'Binary'; case 'TINYINT': - // treat TINYINT(1) as boolean as it is aliased as BOOL and BOOLEAN in mysql - if (!options.treatTINYINT1AsTinyInt && columnType === 'tinyint(1)') { + // treat TINYINT as boolean as it is aliased as BOOL and BOOLEAN in mysql + if (!options.treatTINYINT1AsTinyInt && columnType.includes('tinyint')) { return 'Boolean'; } case 'SMALLINT': diff --git a/test/mysql.discover.test.js b/test/mysql.discover.test.js index 9da8060e..b6d9c9c2 100644 --- a/test/mysql.discover.test.js +++ b/test/mysql.discover.test.js @@ -518,7 +518,6 @@ describe('Discover and build models', function() { context('with flag treatTINYINT1AsTinyInt = false', function() { let models, schema; before(discoverAndBuildModels); - it('handles CHAR(1) as Boolean', function() { assert(schema.properties.enabled); assert.strictEqual(schema.properties.enabled.type, Boolean); @@ -568,6 +567,11 @@ describe('Discover and build models', function() { assert.strictEqual(schema.properties.active.type, Boolean); }); + it('handles TINYINT as Boolean', function() { + assert(schema.properties.archived); + assert.strictEqual(schema.properties.archived.type, Boolean); + }); + function discoverAndBuildModels(done) { db.discoverAndBuildModels('INVENTORY', { owner: 'STRONGLOOP', diff --git a/test/schema.sql b/test/schema.sql index f80ff03e..62d3acad 100644 --- a/test/schema.sql +++ b/test/schema.sql @@ -80,6 +80,7 @@ CREATE TABLE `INVENTORY` ( `TOTAL` int(11) DEFAULT NULL, `DETAILS` json DEFAULT NULL, `ACTIVE` BOOLEAN DEFAULT TRUE, + `ARCHIVED` TINYINT DEFAULT 1, `DISABLED` BIT(1) DEFAULT 0, `ENABLED` CHAR(1) DEFAULT 'Y', PRIMARY KEY (`PRODUCT_ID`,`LOCATION_ID`),