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);
|
var table = self.tableEscaped(model);
|
||||||
self.execute('SHOW FIELDS FROM ' + table, function(err, fields) {
|
self.execute('SHOW FIELDS FROM ' + table, function(err, fields) {
|
||||||
self.execute('SHOW INDEXES FROM ' + table, function(err, indexes) {
|
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) {
|
if (!err && fields && fields.length) {
|
||||||
self.alterTable(model, fields, indexes, foreignKeys, done);
|
self.alterTable(model, fields, indexes, foreignKeys, done);
|
||||||
} else {
|
} else {
|
||||||
|
@ -95,7 +95,7 @@ function mixinMigration(MySQL, mysql) {
|
||||||
var table = self.tableEscaped(model);
|
var table = self.tableEscaped(model);
|
||||||
self.execute('SHOW FIELDS FROM ' + table, function(err, fields) {
|
self.execute('SHOW FIELDS FROM ' + table, function(err, fields) {
|
||||||
self.execute('SHOW INDEXES FROM ' + table, function(err, indexes) {
|
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) {
|
self.alterTable(model, fields, indexes, foreignKeys, function(err, needAlter) {
|
||||||
if (err) {
|
if (err) {
|
||||||
return done(err);
|
return done(err);
|
||||||
|
@ -339,7 +339,10 @@ function mixinMigration(MySQL, mysql) {
|
||||||
var oldKeyNames = actualFks.map(function(oldKey) { return oldKey.fkName; });
|
var oldKeyNames = actualFks.map(function(oldKey) { return oldKey.fkName; });
|
||||||
newFkNames.filter(function(key) { return !~oldKeyNames.indexOf(key); })
|
newFkNames.filter(function(key) { return !~oldKeyNames.indexOf(key); })
|
||||||
.forEach(function(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) {
|
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) {
|
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
|
//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 + ')' +
|
' FOREIGN KEY (' + fk.foreignKey + ')' +
|
||||||
' REFERENCES ' + this.tableEscaped(fk.entity.name) +
|
' REFERENCES ' + this.tableEscaped(fkEntity.name) +
|
||||||
'(' + this.client.escapeId(fk.entityKey) + ')';
|
'(' + this.client.escapeId(fk.entityKey) + ')';
|
||||||
}
|
}
|
||||||
return '';
|
return '';
|
||||||
|
@ -460,6 +468,14 @@ function mixinMigration(MySQL, mysql) {
|
||||||
indexes.forEach(function(i) {
|
indexes.forEach(function(i) {
|
||||||
sql.push(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 ');
|
return sql.join(',\n ');
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue