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); } }