Set up multiple imports for generic diagrams

This commit is contained in:
1ilit 2024-06-10 22:57:21 +03:00
parent 73dff50f14
commit 6c1ff1518f
4 changed files with 47 additions and 5 deletions

View File

@ -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: [

View File

@ -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);

View File

@ -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: [] };
}
}

View File

@ -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 = [];