import grabSQLKeyName from "../../utils/grab-sql-key-name"; import varDatabaseDbHandler from "./varDatabaseDbHandler"; type Param = { dbFullName: string; tableName: string; }; /** * # Drop All Foreign Keys */ export default async function dropAllForeignKeys({ dbFullName, tableName, }: Param) { 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: any) { console.log(`dropAllForeignKeys ERROR => ${error.message}`); } }