From 159dcca4dcb84a88ad23425238970dfdfd65420c Mon Sep 17 00:00:00 2001 From: 1ilit Date: Mon, 8 Jul 2024 04:03:41 +0300 Subject: [PATCH] Fix import diagram --- src/components/EditorHeader/ControlPanel.jsx | 2 ++ .../EditorHeader/Modal/ImportDiagram.jsx | 18 ++++++++++++++++-- src/data/schemas.js | 1 + 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/src/components/EditorHeader/ControlPanel.jsx b/src/components/EditorHeader/ControlPanel.jsx index a07489d..f4964db 100644 --- a/src/components/EditorHeader/ControlPanel.jsx +++ b/src/components/EditorHeader/ControlPanel.jsx @@ -936,6 +936,7 @@ export default function ControlPanel({ relationships: relationships, notes: notes, subjectAreas: areas, + database: database, ...(databases[database].hasTypes && { types: types }), ...(databases[database].hasEnums && { enums: enums }), title: title, @@ -996,6 +997,7 @@ export default function ControlPanel({ relationships: relationships, notes: notes, subjectAreas: areas, + database: database, ...(databases[database].hasTypes && { types: types }), ...(databases[database].hasEnums && { enums: enums }), }, diff --git a/src/components/EditorHeader/Modal/ImportDiagram.jsx b/src/components/EditorHeader/Modal/ImportDiagram.jsx index c44186e..9f0885a 100644 --- a/src/components/EditorHeader/Modal/ImportDiagram.jsx +++ b/src/components/EditorHeader/Modal/ImportDiagram.jsx @@ -3,7 +3,7 @@ import { jsonDiagramIsValid, } from "../../../utils/validateSchema"; import { Upload, Banner } from "@douyinfe/semi-ui"; -import { STATUS } from "../../../data/constants"; +import { DB, STATUS } from "../../../data/constants"; import { useAreas, useEnums, @@ -16,7 +16,7 @@ import { useTranslation } from "react-i18next"; export default function ImportDiagram({ setImportData, error, setError }) { const { areas } = useAreas(); const { notes } = useNotes(); - const { tables, relationships } = useDiagram(); + const { tables, relationships, database } = useDiagram(); const { types } = useTypes(); const { enums } = useEnums(); const { t } = useTranslation(); @@ -72,6 +72,20 @@ export default function ImportDiagram({ setImportData, error, setError }) { return; } } + + if (!jsonObject.database) { + jsonObject.database = DB.GENERIC; + } + + if (jsonObject.database !== database) { + setError({ + type: STATUS.ERROR, + message: + "The imported diagram and the open diagram don't use matching databases.", + }); + return; + } + setImportData(jsonObject); if (diagramIsEmpty()) { setError({ diff --git a/src/data/schemas.js b/src/data/schemas.js index bc81855..057749f 100644 --- a/src/data/schemas.js +++ b/src/data/schemas.js @@ -171,6 +171,7 @@ export const jsonSchema = { items: { ...enumSchema }, }, title: { type: "string" }, + database: { type: "string" }, }, required: ["tables", "relationships", "notes", "subjectAreas"], };