21 lines
939 B
JavaScript
21 lines
939 B
JavaScript
import MariaDBQuoteGen from "./mariadb-quote-gen";
|
|
export function defaultForeignKeyName(tableName, fieldName) {
|
|
return `fk_${tableName}_${fieldName}`;
|
|
}
|
|
export function resolveForeignKeyName(field, tableName) {
|
|
const fieldName = field.fieldName || "column";
|
|
return field.foreignKey?.foreignKeyName || defaultForeignKeyName(tableName, fieldName);
|
|
}
|
|
export default function buildForeignKeyConstraint(field, tableName) {
|
|
const fk = field.foreignKey;
|
|
const constraintName = resolveForeignKeyName(field, tableName);
|
|
let constraint = `CONSTRAINT ${MariaDBQuoteGen(constraintName)} FOREIGN KEY (${MariaDBQuoteGen(field.fieldName)}) REFERENCES ${MariaDBQuoteGen(fk.destinationTableName)}(${MariaDBQuoteGen(fk.destinationTableColumnName)})`;
|
|
if (fk.cascadeDelete) {
|
|
constraint += " ON DELETE CASCADE";
|
|
}
|
|
if (fk.cascadeUpdate) {
|
|
constraint += " ON UPDATE CASCADE";
|
|
}
|
|
return constraint;
|
|
}
|