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) {
|
||||
actualize(propName, found);
|
||||
actualize(colName, found);
|
||||
} else {
|
||||
sql.push('ADD COLUMN ' + self.client.escapeId(propName) + ' ' +
|
||||
sql.push('ADD COLUMN ' + self.client.escapeId(colName) + ' ' +
|
||||
self.buildColumnDefinition(model, propName));
|
||||
}
|
||||
});
|
||||
|
@ -227,7 +227,8 @@ function mixinMigration(MySQL, mysql) {
|
|||
}
|
||||
var found = ai[propName] && ai[propName].info;
|
||||
if (!found) {
|
||||
var pName = self.client.escapeId(propName);
|
||||
var colName = expectedColName(propName);
|
||||
var pName = self.client.escapeId(colName);
|
||||
var type = '';
|
||||
var kind = '';
|
||||
if (i.type) {
|
||||
|
|
|
@ -58,6 +58,19 @@ describe('MySQL connector', function() {
|
|||
'type': 'Number',
|
||||
'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,
|
||||
'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.discoverModelProperties('customer_test', function(err, props) {
|
||||
assert.equal(props.length, 4);
|
||||
assert.equal(props.length, 5);
|
||||
var names = props.map(function(p) {
|
||||
return p.columnName;
|
||||
});
|
||||
|
@ -128,6 +181,7 @@ describe('MySQL connector', function() {
|
|||
assert.equal(names[1], 'name');
|
||||
assert.equal(names[2], 'email');
|
||||
assert.equal(names[3], 'age');
|
||||
assert.equal(names[4], 'customer_discount');
|
||||
|
||||
ds.connector.execute('SHOW INDEXES FROM customer_test', function(err, indexes) {
|
||||
if (err) return done (err);
|
||||
|
@ -140,24 +194,31 @@ describe('MySQL connector', function() {
|
|||
if (err) return done (err);
|
||||
ds.discoverModelProperties('customer_test', function(err, props) {
|
||||
if (err) return done (err);
|
||||
assert.equal(props.length, 4);
|
||||
assert.equal(props.length, 7);
|
||||
var names = props.map(function(p) {
|
||||
return p.columnName;
|
||||
});
|
||||
assert.equal(names[0], 'id');
|
||||
assert.equal(names[1], 'email');
|
||||
assert.equal(names[2], 'firstName');
|
||||
assert.equal(names[3], 'lastName');
|
||||
assert.equal(names[2], 'customer_discount');
|
||||
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) {
|
||||
if (err) return done (err);
|
||||
assert(updatedindexes);
|
||||
assert(updatedindexes.length.should.be.above(2));
|
||||
assert.equal(updatedindexes[1].Key_name, 'updated_name_index');
|
||||
assert(updatedindexes.length.should.be.above(3));
|
||||
assert.equal(updatedindexes[1].Key_name, 'customer_code');
|
||||
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
|
||||
assert.equal(updatedindexes[1].Collation, 'A');
|
||||
assert.equal(updatedindexes[2].Collation, 'A');
|
||||
assert.equal(updatedindexes[3].Collation, 'A');
|
||||
assert.equal(updatedindexes[1].Non_unique, 0);
|
||||
assert.equal(updatedindexes[2].Non_unique, 0);
|
||||
assert.equal(updatedindexes[3].Non_unique, 0);
|
||||
done(err, result);
|
||||
});
|
||||
});
|
||||
|
|
Loading…
Reference in New Issue