From f2613139bb9a8300a32cd87edb3443b209bd2d2d Mon Sep 17 00:00:00 2001 From: 1ilit <1ilit@proton.me> Date: Sun, 11 May 2025 22:11:16 +0400 Subject: [PATCH] Fix ids and relationship names on import (#445) --- src/utils/importFrom/dbml.js | 7 ++++--- src/utils/importSQL/mssql.js | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/utils/importFrom/dbml.js b/src/utils/importFrom/dbml.js index c105262..3157f10 100644 --- a/src/utils/importFrom/dbml.js +++ b/src/utils/importFrom/dbml.js @@ -1,6 +1,7 @@ import { Parser } from "@dbml/core"; import { arrangeTables } from "../arrangeTables"; import { Cardinality, Constraint } from "../../data/constants"; +import { nanoid } from "nanoid"; const parser = new Parser(); @@ -14,7 +15,7 @@ export function fromDBML(src) { for (const schema of ast.schemas) { for (const table of schema.tables) { let parsedTable = {}; - parsedTable.id = tables.length; + parsedTable.id = nanoid(); parsedTable.name = table.name; parsedTable.comment = table.note ?? ""; parsedTable.color = "#175e7a"; @@ -24,7 +25,7 @@ export function fromDBML(src) { for (const column of table.fields) { const field = {}; - field.id = parsedTable.fields.length; + field.id = nanoid(); field.name = column.name; field.type = column.type.type_name.toUpperCase(); field.default = column.dbdefault ?? ""; @@ -76,7 +77,7 @@ export function fromDBML(src) { const relationship = {}; relationship.name = - "fk_" + startTable + "_" + startField + "_" + endTable; + "fk_" + startTableName + "_" + startFieldName + "_" + endTableName; relationship.startTableId = startTable.id; relationship.endTableId = endTable.id; relationship.endFieldId = endField.id; diff --git a/src/utils/importSQL/mssql.js b/src/utils/importSQL/mssql.js index 7af6976..eff847a 100644 --- a/src/utils/importSQL/mssql.js +++ b/src/utils/importSQL/mssql.js @@ -237,7 +237,7 @@ export function fromMSSQL(ast, diagramDb = DB.GENERIC) { ); if (!startField) return; - relationship.name = `fk_${startTable}_${startField}_${endTable}`; + relationship.name = `fk_${startTableName}_${startFieldName}_${endTableName}`; relationship.startTableId = startTable.id; relationship.startFieldId = startField.id; relationship.endTableId = endTable.id;