36 lines
1.5 KiB
JavaScript
36 lines
1.5 KiB
JavaScript
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}`);
|
|
}
|
|
}
|