2024-06-14 06:00:47 +08:00
|
|
|
import {
|
|
|
|
DB,
|
|
|
|
tableColorStripHeight,
|
|
|
|
tableFieldHeight,
|
|
|
|
tableHeaderHeight,
|
|
|
|
} from "../../data/constants";
|
2024-06-16 09:54:03 +08:00
|
|
|
import { fromMariaDB } from "./mariadb";
|
2024-07-07 02:44:22 +08:00
|
|
|
import { fromMSSQL } from "./mssql";
|
2024-06-11 03:57:21 +08:00
|
|
|
import { fromMySQL } from "./mysql";
|
2024-06-22 09:13:44 +08:00
|
|
|
import { fromPostgres } from "./postgres";
|
2024-06-14 06:00:47 +08:00
|
|
|
import { fromSQLite } from "./sqlite";
|
2024-06-11 03:57:21 +08:00
|
|
|
|
2024-06-14 06:00:47 +08:00
|
|
|
export function importSQL(ast, toDb = DB.MYSQL, diagramDb = DB.GENERIC) {
|
2024-06-27 16:12:09 +08:00
|
|
|
let diagram;
|
2024-06-14 06:00:47 +08:00
|
|
|
switch (toDb) {
|
2024-06-11 03:57:21 +08:00
|
|
|
case DB.SQLITE:
|
2024-06-14 06:00:47 +08:00
|
|
|
diagram = fromSQLite(ast, diagramDb);
|
|
|
|
break;
|
2024-06-11 03:57:21 +08:00
|
|
|
case DB.MYSQL:
|
2024-06-14 06:00:47 +08:00
|
|
|
diagram = fromMySQL(ast, diagramDb);
|
|
|
|
break;
|
2024-06-11 03:57:21 +08:00
|
|
|
case DB.POSTGRES:
|
2024-06-22 09:13:44 +08:00
|
|
|
diagram = fromPostgres(ast, diagramDb);
|
2024-06-14 06:00:47 +08:00
|
|
|
break;
|
2024-06-11 03:57:21 +08:00
|
|
|
case DB.MARIADB:
|
2024-06-16 09:54:03 +08:00
|
|
|
diagram = fromMariaDB(ast, diagramDb);
|
2024-06-14 06:00:47 +08:00
|
|
|
break;
|
2024-06-11 03:57:21 +08:00
|
|
|
case DB.MSSQL:
|
2024-07-07 02:44:22 +08:00
|
|
|
diagram = fromMSSQL(ast, diagramDb);
|
2024-06-14 06:00:47 +08:00
|
|
|
break;
|
2024-06-11 03:57:21 +08:00
|
|
|
default:
|
2024-06-14 06:00:47 +08:00
|
|
|
diagram = { tables: [], relationships: [] };
|
|
|
|
break;
|
2024-06-11 03:57:21 +08:00
|
|
|
}
|
2024-06-14 06:00:47 +08:00
|
|
|
|
|
|
|
let maxHeight = -1;
|
|
|
|
const tableWidth = 200;
|
|
|
|
const gapX = 54;
|
|
|
|
const gapY = 40;
|
|
|
|
diagram.tables.forEach((table, i) => {
|
|
|
|
if (i < diagram.tables.length / 2) {
|
|
|
|
table.x = i * tableWidth + (i + 1) * gapX;
|
|
|
|
table.y = gapY;
|
|
|
|
const height =
|
|
|
|
table.fields.length * tableFieldHeight +
|
|
|
|
tableHeaderHeight +
|
|
|
|
tableColorStripHeight;
|
|
|
|
maxHeight = Math.max(height, maxHeight);
|
|
|
|
} else {
|
|
|
|
const index = diagram.tables.length - i - 1;
|
|
|
|
table.x = index * tableWidth + (index + 1) * gapX;
|
|
|
|
table.y = maxHeight + 2 * gapY;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
return diagram;
|
2024-06-11 03:57:21 +08:00
|
|
|
}
|