+
{t("name")}:
+
updateRelationship(data.id, { name: value })}
+ onFocus={(e) => setEditField({ name: e.target.value })}
+ onBlur={(e) => {
+ if (e.target.value === editField.name) return;
+ setUndoStack((prev) => [
+ ...prev,
+ {
+ action: Action.EDIT,
+ element: ObjectType.RELATIONSHIP,
+ component: "self",
+ rid: data.id,
+ undo: editField,
+ redo: { name: e.target.value },
+ message: t("edit_relationship", {
+ refName: e.target.value,
+ extra: "[name]",
+ }),
+ },
+ ]);
+ setRedoStack([]);
+ }}
+ />
+
{t("primary")}:
diff --git a/src/context/DiagramContext.jsx b/src/context/DiagramContext.jsx
index 440f8a999..76ba79401 100644
--- a/src/context/DiagramContext.jsx
+++ b/src/context/DiagramContext.jsx
@@ -246,6 +246,12 @@ export default function DiagramContextProvider({ children }) {
);
};
+ const updateRelationship = (id, updatedValues) => {
+ setRelationships((prev) =>
+ prev.map((t) => (t.id === id ? { ...t, ...updatedValues } : t)),
+ );
+ };
+
return (
{
if (
expr.action === "add" &&
- expr.create_definitions.constraint_type.toLowerCase() === "foreign key"
+ expr.create_definitions.constraint_type.toLowerCase() ===
+ "foreign key"
) {
const relationship = {};
const startTable = e.table[0].table;
@@ -230,7 +232,8 @@ export function fromMariaDB(ast, diagramDb = DB.GENERIC) {
);
if (startFieldId === -1) return;
- relationship.name = startTable + "_" + startField + "_fk";
+ relationship.name =
+ "fk_" + startTable + "_" + startField + "_" + endTable;
relationship.startTableId = startTableId;
relationship.startFieldId = startFieldId;
relationship.endTableId = endTableId;
diff --git a/src/utils/importSQL/mssql.js b/src/utils/importSQL/mssql.js
index fa5d1fd24..5f61e0fd1 100644
--- a/src/utils/importSQL/mssql.js
+++ b/src/utils/importSQL/mssql.js
@@ -138,7 +138,8 @@ export function fromMSSQL(ast, diagramDb = DB.GENERIC) {
);
if (startFieldId === -1) return;
- relationship.name = startTable + "_" + startField + "_fk";
+ relationship.name =
+ "fk_" + startTable + "_" + startField + "_" + endTable;
relationship.startTableId = startTableId;
relationship.endTableId = endTableId;
relationship.endFieldId = endFieldId;
@@ -243,7 +244,8 @@ export function fromMSSQL(ast, diagramDb = DB.GENERIC) {
);
if (startFieldId === -1) return;
- relationship.name = startTable + "_" + startField + "_fk";
+ relationship.name =
+ "fk_" + startTable + "_" + startField + "_" + endTable;
relationship.startTableId = startTableId;
relationship.startFieldId = startFieldId;
relationship.endTableId = endTableId;
diff --git a/src/utils/importSQL/mysql.js b/src/utils/importSQL/mysql.js
index 075b3789e..aac8fa0a5 100644
--- a/src/utils/importSQL/mysql.js
+++ b/src/utils/importSQL/mysql.js
@@ -126,7 +126,8 @@ export function fromMySQL(ast, diagramDb = DB.GENERIC) {
);
if (startFieldId === -1) return;
- relationship.name = startTable + "_" + startField + "_fk";
+ relationship.name =
+ "fk_" + startTable + "_" + startField + "_" + endTable;
relationship.startTableId = startTableId;
relationship.endTableId = endTableId;
relationship.endFieldId = endFieldId;
@@ -187,7 +188,8 @@ export function fromMySQL(ast, diagramDb = DB.GENERIC) {
e.expr.forEach((expr) => {
if (
expr.action === "add" &&
- expr.create_definitions.constraint_type.toLowerCase() === "foreign key"
+ expr.create_definitions.constraint_type.toLowerCase() ===
+ "foreign key"
) {
const relationship = {};
const startTable = e.table[0].table;
@@ -230,7 +232,8 @@ export function fromMySQL(ast, diagramDb = DB.GENERIC) {
);
if (startFieldId === -1) return;
- relationship.name = startTable + "_" + startField + "_fk";
+ relationship.name =
+ "fk_" + startTable + "_" + startField + "_" + endTable;
relationship.startTableId = startTableId;
relationship.startFieldId = startFieldId;
relationship.endTableId = endTableId;
diff --git a/src/utils/importSQL/postgres.js b/src/utils/importSQL/postgres.js
index 3ac7a4b52..7ac90526a 100644
--- a/src/utils/importSQL/postgres.js
+++ b/src/utils/importSQL/postgres.js
@@ -129,7 +129,8 @@ export function fromPostgres(ast, diagramDb = DB.GENERIC) {
);
if (startFieldId === -1) return;
- relationship.name = startTable + "_" + startField + "_fk";
+ relationship.name =
+ "fk_" + startTable + "_" + startField + "_" + endTable;
relationship.startTableId = startTableId;
relationship.endTableId = endTableId;
relationship.endFieldId = endFieldId;
@@ -199,7 +200,8 @@ export function fromPostgres(ast, diagramDb = DB.GENERIC) {
);
if (startFieldId === -1) return;
- relationship.name = startTable + "_" + startField + "_fk";
+ relationship.name =
+ "fk_" + startTable + "_" + startField + "_" + endTable;
relationship.startTableId = startTableId;
relationship.startFieldId = startFieldId;
relationship.endTableId = endTableId;
@@ -326,7 +328,8 @@ export function fromPostgres(ast, diagramDb = DB.GENERIC) {
);
if (startFieldId === -1) return;
- relationship.name = startTable + "_" + startField + "_fk";
+ relationship.name =
+ "fk_" + startTable + "_" + startField + "_" + endTable;
relationship.startTableId = startTableId;
relationship.startFieldId = startFieldId;
relationship.endTableId = endTableId;
diff --git a/src/utils/importSQL/sqlite.js b/src/utils/importSQL/sqlite.js
index 93af6ab18..00a0e4e41 100644
--- a/src/utils/importSQL/sqlite.js
+++ b/src/utils/importSQL/sqlite.js
@@ -62,7 +62,8 @@ export function fromSQLite(ast, diagramDb = DB.GENERIC) {
);
if (startFieldId === -1) return;
- relationship.name = startTable.name + "_" + startFieldName + "_fk";
+ relationship.name =
+ "fk_" + startTable.name + "_" + startFieldName + "_" + endTableName;
relationship.startTableId = startTable.id;
relationship.endTableId = endTableId;
relationship.endFieldId = endFieldId;