54 lines
1.7 KiB
TypeScript
54 lines
1.7 KiB
TypeScript
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}`);
|
|
}
|
|
}
|