Fix expected column name when autoupdate
Fix mysql column name being ignored on dataType change or new column being added Fix mysql column name ignored if index changed Add column name case on autoupdate test Fix test case scheme error Fix describe test
This commit is contained in:
parent
333fa21024
commit
0f1b14b158
|
@ -152,9 +152,9 @@ function mixinMigration(MySQL, mysql) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (found) {
|
if (found) {
|
||||||
actualize(propName, found);
|
actualize(colName, found);
|
||||||
} else {
|
} else {
|
||||||
sql.push('ADD COLUMN ' + self.client.escapeId(propName) + ' ' +
|
sql.push('ADD COLUMN ' + self.client.escapeId(colName) + ' ' +
|
||||||
self.buildColumnDefinition(model, propName));
|
self.buildColumnDefinition(model, propName));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -227,7 +227,8 @@ function mixinMigration(MySQL, mysql) {
|
||||||
}
|
}
|
||||||
var found = ai[propName] && ai[propName].info;
|
var found = ai[propName] && ai[propName].info;
|
||||||
if (!found) {
|
if (!found) {
|
||||||
var pName = self.client.escapeId(propName);
|
var colName = expectedColName(propName);
|
||||||
|
var pName = self.client.escapeId(colName);
|
||||||
var type = '';
|
var type = '';
|
||||||
var kind = '';
|
var kind = '';
|
||||||
if (i.type) {
|
if (i.type) {
|
||||||
|
|
|
@ -58,6 +58,19 @@ describe('MySQL connector', function() {
|
||||||
'type': 'Number',
|
'type': 'Number',
|
||||||
'required': false,
|
'required': false,
|
||||||
},
|
},
|
||||||
|
'discount': {
|
||||||
|
'type': 'Number',
|
||||||
|
'required': false,
|
||||||
|
'dataType': 'decimal',
|
||||||
|
'precision': 10,
|
||||||
|
'scale': 2,
|
||||||
|
'mysql': {
|
||||||
|
'columnName': 'customer_discount',
|
||||||
|
'dataType': 'decimal',
|
||||||
|
'dataPrecision': 10,
|
||||||
|
'dataScale': 2,
|
||||||
|
},
|
||||||
|
},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -109,6 +122,46 @@ describe('MySQL connector', function() {
|
||||||
'required': false,
|
'required': false,
|
||||||
'length': 40,
|
'length': 40,
|
||||||
},
|
},
|
||||||
|
// remove age
|
||||||
|
// change data type details with column name
|
||||||
|
'discount': {
|
||||||
|
'type': 'Number',
|
||||||
|
'required': false,
|
||||||
|
'dataType': 'decimal',
|
||||||
|
'precision': 12,
|
||||||
|
'scale': 5,
|
||||||
|
'mysql': {
|
||||||
|
'columnName': 'customer_discount',
|
||||||
|
'dataType': 'decimal',
|
||||||
|
'dataPrecision': 12,
|
||||||
|
'dataScale': 5,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
// add new column with column name
|
||||||
|
'address': {
|
||||||
|
'type': 'String',
|
||||||
|
'required': false,
|
||||||
|
'length': 10,
|
||||||
|
'mysql': {
|
||||||
|
'columnName': 'customer_address',
|
||||||
|
'dataType': 'varchar',
|
||||||
|
'length': 10,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
// add new column with index & column name
|
||||||
|
'code': {
|
||||||
|
'type': 'String',
|
||||||
|
'required': true,
|
||||||
|
'length': 12,
|
||||||
|
'index': {
|
||||||
|
unique: true,
|
||||||
|
},
|
||||||
|
'mysql': {
|
||||||
|
'columnName': 'customer_code',
|
||||||
|
'dataType': 'varchar',
|
||||||
|
'length': 12,
|
||||||
|
},
|
||||||
|
},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -116,7 +169,7 @@ describe('MySQL connector', function() {
|
||||||
|
|
||||||
ds.automigrate(function() {
|
ds.automigrate(function() {
|
||||||
ds.discoverModelProperties('customer_test', function(err, props) {
|
ds.discoverModelProperties('customer_test', function(err, props) {
|
||||||
assert.equal(props.length, 4);
|
assert.equal(props.length, 5);
|
||||||
var names = props.map(function(p) {
|
var names = props.map(function(p) {
|
||||||
return p.columnName;
|
return p.columnName;
|
||||||
});
|
});
|
||||||
|
@ -128,6 +181,7 @@ describe('MySQL connector', function() {
|
||||||
assert.equal(names[1], 'name');
|
assert.equal(names[1], 'name');
|
||||||
assert.equal(names[2], 'email');
|
assert.equal(names[2], 'email');
|
||||||
assert.equal(names[3], 'age');
|
assert.equal(names[3], 'age');
|
||||||
|
assert.equal(names[4], 'customer_discount');
|
||||||
|
|
||||||
ds.connector.execute('SHOW INDEXES FROM customer_test', function(err, indexes) {
|
ds.connector.execute('SHOW INDEXES FROM customer_test', function(err, indexes) {
|
||||||
if (err) return done (err);
|
if (err) return done (err);
|
||||||
|
@ -140,24 +194,31 @@ describe('MySQL connector', function() {
|
||||||
if (err) return done (err);
|
if (err) return done (err);
|
||||||
ds.discoverModelProperties('customer_test', function(err, props) {
|
ds.discoverModelProperties('customer_test', function(err, props) {
|
||||||
if (err) return done (err);
|
if (err) return done (err);
|
||||||
assert.equal(props.length, 4);
|
assert.equal(props.length, 7);
|
||||||
var names = props.map(function(p) {
|
var names = props.map(function(p) {
|
||||||
return p.columnName;
|
return p.columnName;
|
||||||
});
|
});
|
||||||
assert.equal(names[0], 'id');
|
assert.equal(names[0], 'id');
|
||||||
assert.equal(names[1], 'email');
|
assert.equal(names[1], 'email');
|
||||||
assert.equal(names[2], 'firstName');
|
assert.equal(names[2], 'customer_discount');
|
||||||
assert.equal(names[3], 'lastName');
|
assert.equal(names[3], 'firstName');
|
||||||
|
assert.equal(names[4], 'lastName');
|
||||||
|
assert.equal(names[5], 'customer_address');
|
||||||
|
assert.equal(names[6], 'customer_code');
|
||||||
ds.connector.execute('SHOW INDEXES FROM customer_test', function(err, updatedindexes) {
|
ds.connector.execute('SHOW INDEXES FROM customer_test', function(err, updatedindexes) {
|
||||||
if (err) return done (err);
|
if (err) return done (err);
|
||||||
assert(updatedindexes);
|
assert(updatedindexes);
|
||||||
assert(updatedindexes.length.should.be.above(2));
|
assert(updatedindexes.length.should.be.above(3));
|
||||||
assert.equal(updatedindexes[1].Key_name, 'updated_name_index');
|
assert.equal(updatedindexes[1].Key_name, 'customer_code');
|
||||||
assert.equal(updatedindexes[2].Key_name, 'updated_name_index');
|
assert.equal(updatedindexes[2].Key_name, 'updated_name_index');
|
||||||
|
assert.equal(updatedindexes[3].Key_name, 'updated_name_index');
|
||||||
//Mysql supports only index sorting in ascending; DESC is ignored
|
//Mysql supports only index sorting in ascending; DESC is ignored
|
||||||
assert.equal(updatedindexes[1].Collation, 'A');
|
assert.equal(updatedindexes[1].Collation, 'A');
|
||||||
assert.equal(updatedindexes[2].Collation, 'A');
|
assert.equal(updatedindexes[2].Collation, 'A');
|
||||||
|
assert.equal(updatedindexes[3].Collation, 'A');
|
||||||
assert.equal(updatedindexes[1].Non_unique, 0);
|
assert.equal(updatedindexes[1].Non_unique, 0);
|
||||||
|
assert.equal(updatedindexes[2].Non_unique, 0);
|
||||||
|
assert.equal(updatedindexes[3].Non_unique, 0);
|
||||||
done(err, result);
|
done(err, result);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in New Issue