import grabSQLKeyName from "../../utils/grab-sql-key-name"; import varDatabaseDbHandler from "./varDatabaseDbHandler"; /** * # Drop All Foreign Keys */ export default async function dropAllForeignKeys({ dbFullName, tableName, }) { try { // const rows = await varDatabaseDbHandler({ // queryString: `SELECT CONSTRAINT_NAME FROM information_schema.REFERENTIAL_CONSTRAINTS WHERE TABLE_NAME = '${tableName}' AND CONSTRAINT_SCHEMA = '${dbFullName}'`, // }); // console.log("rows", rows); // console.log("dbFullName", dbFullName); // console.log("tableName", tableName); // for (const row of rows) { // await varDatabaseDbHandler({ // queryString: `ALTER TABLE \`${dbFullName}\`.\`${tableName}\` DROP FOREIGN KEY \`${row.CONSTRAINT_NAME}\` // `, // }); // } const foreignKeys = await varDatabaseDbHandler({ queryString: `SHOW INDEXES FROM \`${dbFullName}\`.\`${tableName}\` WHERE Key_name LIKE '${grabSQLKeyName({ type: "foreign_key" })}%'`, }); for (const fk of foreignKeys) { if (fk.Key_name.match(new RegExp(grabSQLKeyName({ type: "foreign_key" })))) { await varDatabaseDbHandler({ queryString: `ALTER TABLE \`${dbFullName}\`.\`${tableName}\` DROP INDEX \`${fk.Key_name}\` `, }); } } } catch (error) { console.log(`dropAllForeignKeys ERROR => ${error.message}`); } }