datasquirel/package-shared/shell/utils/handle-table-foreign-key.ts
Benjamin Toby 7e8bb37c09 Updates
2025-07-05 14:59:30 +01:00

52 lines
1.6 KiB
TypeScript

import varDatabaseDbHandler from "./varDatabaseDbHandler";
import { DSQL_ForeignKeyType } from "../../types";
type Param = {
dbFullName: string;
tableName: string;
foreignKey: DSQL_ForeignKeyType;
fieldName: string;
errorLogs?: any[];
};
/**
* # Update table function
*/
export default async function handleTableForeignKey({
dbFullName,
tableName,
foreignKey,
errorLogs,
fieldName,
}: Param) {
const {
destinationTableName,
destinationTableColumnName,
cascadeDelete,
cascadeUpdate,
foreignKeyName,
} = foreignKey;
let finalQueryString = `ALTER TABLE \`${dbFullName}\`.\`${tableName}\``;
finalQueryString += ` ADD CONSTRAINT \`${foreignKeyName}\` FOREIGN KEY (\`${fieldName}\`)`;
finalQueryString += ` REFERENCES \`${destinationTableName}\`(\`${destinationTableColumnName}\`)`;
if (cascadeDelete) finalQueryString += ` ON DELETE CASCADE`;
if (cascadeUpdate) finalQueryString += ` ON UPDATE CASCADE`;
// let foreinKeyText = `ADD CONSTRAINT \`${foreignKeyName}\` FOREIGN KEY (\`${destinationTableColumnType}\`) REFERENCES \`${destinationTableName}\`(\`${destinationTableColumnName}\`)${
// cascadeDelete ? " ON DELETE CASCADE" : ""
// }${cascadeUpdate ? " ON UPDATE CASCADE" : ""}`;
// let finalQueryString = `ALTER TABLE \`${dbFullName}\`.\`${tableName}\` ${foreinKeyText}`;
const addForeignKey = await varDatabaseDbHandler({
queryString: finalQueryString,
});
if (!addForeignKey?.serverStatus) {
errorLogs?.push(addForeignKey);
}
}