diff --git a/src/components/EditorHeader/ControlPanel.jsx b/src/components/EditorHeader/ControlPanel.jsx index 1c266bb..e89dfea 100644 --- a/src/components/EditorHeader/ControlPanel.jsx +++ b/src/components/EditorHeader/ControlPanel.jsx @@ -740,7 +740,30 @@ export default function ControlPanel({ shortcut: "Ctrl+I", }, import_from_source: { - function: () => setModal(MODAL.IMPORT_SRC), + ...(database === DB.GENERIC && { + children: [ + { + MySQL: () => setModal(MODAL.IMPORT_SRC), + }, + // { + // PostgreSQL: () => setModal(MODAL.IMPORT_SRC), + // }, + { + SQLite: () => setModal(MODAL.IMPORT_SRC), + }, + // { + // MariaDB: () => setModal(MODAL.IMPORT_SRC), + // }, + // { + // MSSQL: () => setModal(MODAL.IMPORT_SRC), + // }, + ], + }), + function: () => { + if (database === DB.GENERIC) return; + + setModal(MODAL.IMPORT_SRC) + }, }, export_as: { children: [ diff --git a/src/components/EditorHeader/Modal/Modal.jsx b/src/components/EditorHeader/Modal/Modal.jsx index f4af4f2..b352148 100644 --- a/src/components/EditorHeader/Modal/Modal.jsx +++ b/src/components/EditorHeader/Modal/Modal.jsx @@ -19,7 +19,6 @@ import { } from "../../../hooks"; import { saveAs } from "file-saver"; import { Parser } from "node-sql-parser"; -import { astToDiagram } from "../../../utils/astToDiagram"; import { getModalTitle, getOkText } from "../../../utils/modalTitles"; import Rename from "./Rename"; import Open from "./Open"; @@ -34,6 +33,7 @@ import { vscodeDark } from "@uiw/codemirror-theme-vscode"; import { json } from "@codemirror/lang-json"; import { githubLight } from "@uiw/codemirror-theme-github"; import { useTranslation } from "react-i18next"; +import { importSQL } from "../../../utils/importSQL"; const languageExtension = { sql: [sql()], @@ -136,7 +136,7 @@ export default function Modal({ return; } - const d = astToDiagram(ast); + const d = importSQL(ast); if (importSource.overwrite) { setTables(d.tables); setRelationships(d.relationships); diff --git a/src/utils/importSQL/index.js b/src/utils/importSQL/index.js new file mode 100644 index 0000000..969f70f --- /dev/null +++ b/src/utils/importSQL/index.js @@ -0,0 +1,19 @@ +import { DB } from "../../data/constants"; +import { fromMySQL } from "./mysql"; + +export function importSQL(ast, database = DB.MYSQL) { + switch (database) { + case DB.SQLITE: + return { tables: [], relationships: [] }; + case DB.MYSQL: + return fromMySQL(ast); + case DB.POSTGRES: + return { tables: [], relationships: [] }; + case DB.MARIADB: + return { tables: [], relationships: [] }; + case DB.MSSQL: + return { tables: [], relationships: [] }; + default: + return { tables: [], relationships: [] }; + } +} diff --git a/src/utils/astToDiagram.js b/src/utils/importSQL/mysql.js similarity index 99% rename from src/utils/astToDiagram.js rename to src/utils/importSQL/mysql.js index c57046b..97283f5 100644 --- a/src/utils/astToDiagram.js +++ b/src/utils/importSQL/mysql.js @@ -3,7 +3,7 @@ import { tableColorStripHeight, tableFieldHeight, tableHeaderHeight, -} from "../data/constants"; +} from "../../data/constants"; function buildSQLFromAST(ast) { if (ast.type === "binary_expr") { @@ -41,7 +41,7 @@ function buildSQLFromAST(ast) { } } -export function astToDiagram(ast) { +export function fromMySQL(ast) { const tables = []; const relationships = [];