fix: parse some options to boolean
Signed-off-by: Muhammad Aaqil <aaqilniz@yahoo.com>
This commit is contained in:
parent
edf176b092
commit
ab28f74fb4
|
@ -310,6 +310,24 @@ function mixinDiscovery(MySQL, mysql) {
|
||||||
const columnType = columnDefinition.columnType;
|
const columnType = columnDefinition.columnType;
|
||||||
const dataLength = columnDefinition.dataLength;
|
const dataLength = columnDefinition.dataLength;
|
||||||
|
|
||||||
|
// when options are received here the treatTINYINT1AsTinyInt comes as a string
|
||||||
|
if (typeof options.treatCHAR1AsString === 'string') {
|
||||||
|
options.treatCHAR1AsString =
|
||||||
|
options.treatCHAR1AsString === 'true';
|
||||||
|
}
|
||||||
|
|
||||||
|
// when options are received here the treatBIT1AsBit comes as a string
|
||||||
|
if (typeof options.treatBIT1AsBit === 'string') {
|
||||||
|
options.treatBIT1AsBit =
|
||||||
|
options.treatBIT1AsBit === 'true';
|
||||||
|
}
|
||||||
|
|
||||||
|
// when options are received here the treatTINYINT1AsTinyInt comes as a string
|
||||||
|
if (typeof options.treatTINYINT1AsTinyInt === 'string') {
|
||||||
|
options.treatTINYINT1AsTinyInt =
|
||||||
|
options.treatTINYINT1AsTinyInt === 'true';
|
||||||
|
}
|
||||||
|
|
||||||
const type = mysqlType.toUpperCase();
|
const type = mysqlType.toUpperCase();
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case 'CHAR':
|
case 'CHAR':
|
||||||
|
|
|
@ -357,6 +357,39 @@ describe('Discover and build models', function() {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
context('with flag treatCHAR1AsString = "true"', function() {
|
||||||
|
let models, schema;
|
||||||
|
before(discoverAndBuildModels);
|
||||||
|
|
||||||
|
it('handles CHAR(1) as String', function() {
|
||||||
|
assert(schema.properties.enabled);
|
||||||
|
assert.strictEqual(schema.properties.enabled.type, String);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('handles BIT(1) as Binary', function() {
|
||||||
|
assert(schema.properties.disabled);
|
||||||
|
assert.strictEqual(schema.properties.disabled.type, Buffer);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('handles TINYINT(1) as Number', function() {
|
||||||
|
assert(schema.properties.active);
|
||||||
|
assert.strictEqual(schema.properties.active.type, Number);
|
||||||
|
});
|
||||||
|
|
||||||
|
function discoverAndBuildModels(done) {
|
||||||
|
db.discoverAndBuildModels('INVENTORY', {
|
||||||
|
owner: 'STRONGLOOP',
|
||||||
|
visited: {},
|
||||||
|
associations: true,
|
||||||
|
treatCHAR1AsString: 'true',
|
||||||
|
}, function(err, models_) {
|
||||||
|
models = models_;
|
||||||
|
schema = models.Inventory.definition;
|
||||||
|
done(err);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
context('with flag treatBIT1AsBit = false', function() {
|
context('with flag treatBIT1AsBit = false', function() {
|
||||||
let models, schema;
|
let models, schema;
|
||||||
before(discoverAndBuildModels);
|
before(discoverAndBuildModels);
|
||||||
|
@ -390,6 +423,39 @@ describe('Discover and build models', function() {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
context('with flag treatBIT1AsBit = "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);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('handles BIT(1) as Boolean', function() {
|
||||||
|
assert(schema.properties.disabled);
|
||||||
|
assert.strictEqual(schema.properties.disabled.type, Boolean);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('handles TINYINT(1) as Number', function() {
|
||||||
|
assert(schema.properties.active);
|
||||||
|
assert.strictEqual(schema.properties.active.type, Number);
|
||||||
|
});
|
||||||
|
|
||||||
|
function discoverAndBuildModels(done) {
|
||||||
|
db.discoverAndBuildModels('INVENTORY', {
|
||||||
|
owner: 'STRONGLOOP',
|
||||||
|
visited: {},
|
||||||
|
associations: true,
|
||||||
|
treatBIT1AsBit: 'false',
|
||||||
|
}, function(err, models_) {
|
||||||
|
models = models_;
|
||||||
|
schema = models.Inventory.definition;
|
||||||
|
done(err);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
context('with flag treatTINYINT1AsTinyInt = false', function() {
|
context('with flag treatTINYINT1AsTinyInt = false', function() {
|
||||||
let models, schema;
|
let models, schema;
|
||||||
before(discoverAndBuildModels);
|
before(discoverAndBuildModels);
|
||||||
|
@ -423,5 +489,39 @@ 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);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('handles BIT(1) as Binary', function() {
|
||||||
|
assert(schema.properties.disabled);
|
||||||
|
assert.strictEqual(schema.properties.disabled.type, Buffer);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('handles TINYINT(1) as Boolean', function() {
|
||||||
|
assert(schema.properties.active);
|
||||||
|
assert.strictEqual(schema.properties.active.type, Boolean);
|
||||||
|
});
|
||||||
|
|
||||||
|
function discoverAndBuildModels(done) {
|
||||||
|
db.discoverAndBuildModels('INVENTORY', {
|
||||||
|
owner: 'STRONGLOOP',
|
||||||
|
visited: {},
|
||||||
|
associations: true,
|
||||||
|
treatTINYINT1AsTinyInt: 'false',
|
||||||
|
}, function(err, models_) {
|
||||||
|
if (err) return done(err);
|
||||||
|
models = models_;
|
||||||
|
schema = models.Inventory.definition;
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in New Issue