chore: refactor

This commit is contained in:
Ben Irvin 2024-12-16 09:41:08 +01:00
parent 6a649cd9b7
commit cfda358b7f

View File

@ -297,9 +297,6 @@ const createHelpers = (db: Database) => {
let existingIndexes = [...existingMetadata.indexes]; let existingIndexes = [...existingMetadata.indexes];
const existingForeignKeys = [...existingMetadata.foreignKeys]; const existingForeignKeys = [...existingMetadata.foreignKeys];
// In MySQL, dropping a foreign key can also implicitly drop an index with the same name
const isMySQL = db.config.connection.client === 'mysql';
// Track dropped foreign keys // Track dropped foreign keys
const droppedForeignKeyNames: string[] = []; const droppedForeignKeyNames: string[] = [];
@ -309,22 +306,19 @@ const createHelpers = (db: Database) => {
debug(`Dropping foreign key ${removedForeignKey.name} on ${table.name}`); debug(`Dropping foreign key ${removedForeignKey.name} on ${table.name}`);
dropForeignKey(tableBuilder, removedForeignKey); dropForeignKey(tableBuilder, removedForeignKey);
if (isMySQL) { droppedForeignKeyNames.push(removedForeignKey.name);
droppedForeignKeyNames.push(removedForeignKey.name);
}
} }
for (const updatedForeignKey of table.foreignKeys.updated) { for (const updatedForeignKey of table.foreignKeys.updated) {
debug(`Dropping updated foreign key ${updatedForeignKey.name} on ${table.name}`); debug(`Dropping updated foreign key ${updatedForeignKey.name} on ${table.name}`);
dropForeignKey(tableBuilder, updatedForeignKey.object); dropForeignKey(tableBuilder, updatedForeignKey.object);
if (isMySQL) { droppedForeignKeyNames.push(updatedForeignKey.object.name);
droppedForeignKeyNames.push(updatedForeignKey.object.name);
}
} }
// In MySQL, dropping a foreign key can also implicitly drop an index with the same name
// Remove dropped foreign keys from existingIndexes for MySQL // Remove dropped foreign keys from existingIndexes for MySQL
if (isMySQL) { if (db.config.connection.client === 'mysql') {
existingIndexes = existingIndexes.filter( existingIndexes = existingIndexes.filter(
(index) => !droppedForeignKeyNames.includes(index.name) (index) => !droppedForeignKeyNames.includes(index.name)
); );