Update foreign key creation table name handling
This commit is contained in:
parent
782959cf20
commit
940032f4dd
|
@ -42,7 +42,7 @@ function mixinMigration(MySQL, mysql) {
|
|||
var table = self.tableEscaped(model);
|
||||
self.execute('SHOW FIELDS FROM ' + table, function(err, fields) {
|
||||
self.execute('SHOW INDEXES FROM ' + table, function(err, indexes) {
|
||||
self.discoverForeignKeys(model, {}, function(discoverErr, foreignKeys) {
|
||||
self.discoverForeignKeys(self.table(model), {}, function(discoverErr, foreignKeys) {
|
||||
if (!err && fields && fields.length) {
|
||||
self.alterTable(model, fields, indexes, foreignKeys, done);
|
||||
} else {
|
||||
|
@ -95,7 +95,7 @@ function mixinMigration(MySQL, mysql) {
|
|||
var table = self.tableEscaped(model);
|
||||
self.execute('SHOW FIELDS FROM ' + table, function(err, fields) {
|
||||
self.execute('SHOW INDEXES FROM ' + table, function(err, indexes) {
|
||||
self.discoverForeignKeys(model, {}, function(discoverErr, foreignKeys) {
|
||||
self.discoverForeignKeys(self.table(model), {}, function(discoverErr, foreignKeys) {
|
||||
self.alterTable(model, fields, indexes, foreignKeys, function(err, needAlter) {
|
||||
if (err) {
|
||||
return done(err);
|
||||
|
@ -339,7 +339,10 @@ function mixinMigration(MySQL, mysql) {
|
|||
var oldKeyNames = actualFks.map(function(oldKey) { return oldKey.fkName; });
|
||||
newFkNames.filter(function(key) { return !~oldKeyNames.indexOf(key); })
|
||||
.forEach(function(key) {
|
||||
sql.push(self.buildForeignKeyDefinition(m, key));
|
||||
var constraint = self.buildForeignKeyDefinition(model, key);
|
||||
if (constraint) {
|
||||
sql.push('ADD ' + constraint);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -412,12 +415,17 @@ function mixinMigration(MySQL, mysql) {
|
|||
};
|
||||
|
||||
MySQL.prototype.buildForeignKeyDefinition = function(model, keyName) {
|
||||
var fk = model.settings.foreignKeys[keyName];
|
||||
//TODO validate that these are in the same DB, etc.
|
||||
//TODO this is probably a better place to check this than in autoupdate or buildColumnDefinitions
|
||||
var definition = this.getModelDefinition(model);
|
||||
var fk = definition.settings.foreignKeys[keyName];
|
||||
if (fk) {
|
||||
var fkEntity = typeof fk.entity === "object" ? fk.entity : {name: fk.entity}; //this.getModelDefinition(fk.entity);
|
||||
|
||||
//TODO verify that the other model in the same DB
|
||||
return ' ADD CONSTRAINT ' + this.client.escapeId(fk.name) +
|
||||
return ' CONSTRAINT ' + this.client.escapeId(fk.name) +
|
||||
' FOREIGN KEY (' + fk.foreignKey + ')' +
|
||||
' REFERENCES ' + this.tableEscaped(fk.entity.name) +
|
||||
' REFERENCES ' + this.tableEscaped(fkEntity.name) +
|
||||
'(' + this.client.escapeId(fk.entityKey) + ')';
|
||||
}
|
||||
return '';
|
||||
|
@ -460,6 +468,14 @@ function mixinMigration(MySQL, mysql) {
|
|||
indexes.forEach(function(i) {
|
||||
sql.push(i);
|
||||
});
|
||||
|
||||
// var foreignKeys = definition.settings.foreignKeys || {};
|
||||
// for (var fk in foreignKeys) {
|
||||
// var constraint = self.buildForeignKeyDefinition(model, fk);
|
||||
// if (constraint) {
|
||||
// sql.push(constraint);
|
||||
// }
|
||||
// }
|
||||
return sql.join(',\n ');
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in New Issue