import { DSQL_ForeignKeyType } from "../../types"; import dbHandler from "../../functions/backend/dbHandler"; 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 dbHandler({ query: finalQueryString, })) as any; if (!addForeignKey?.serverStatus) { errorLogs?.push(addForeignKey); } }