Allow self references
This commit is contained in:
parent
1f84e36f8c
commit
604bed67dd
@ -46,7 +46,8 @@ import {
|
||||
jsonToMySQL,
|
||||
jsonToPostgreSQL,
|
||||
jsonToSQLite,
|
||||
jsonToMariaDB
|
||||
jsonToMariaDB,
|
||||
jsonToSQLServer
|
||||
} from "../utils";
|
||||
import {
|
||||
AreaContext,
|
||||
@ -1010,7 +1011,21 @@ export default function ControlPanel({
|
||||
}));
|
||||
},
|
||||
},
|
||||
{ DBML: () => { } },
|
||||
{
|
||||
"SQL Server": () => {
|
||||
setVisible(MODAL.CODE);
|
||||
const src = jsonToSQLServer({
|
||||
tables: tables,
|
||||
references: relationships,
|
||||
types: types,
|
||||
});
|
||||
setExportData((prev) => ({
|
||||
...prev,
|
||||
data: src,
|
||||
extension: "sql",
|
||||
}));
|
||||
}
|
||||
},
|
||||
],
|
||||
function: () => { },
|
||||
},
|
||||
|
@ -3,7 +3,7 @@ import { templateSeeds } from "./seeds";
|
||||
|
||||
const db = new Dexie("drawDB");
|
||||
|
||||
db.version(2).stores({
|
||||
db.version(3).stores({
|
||||
diagrams: "++id, lastModified",
|
||||
templates: "++id, custom",
|
||||
});
|
||||
|
@ -420,20 +420,16 @@ export default function Editor() {
|
||||
if (updateRelationships) {
|
||||
setRelationships((prev) =>
|
||||
prev.map((r) => {
|
||||
let newR = { ...r };
|
||||
if (r.startTableId === id) {
|
||||
return {
|
||||
...r,
|
||||
startX: updatedValues.x + 15,
|
||||
startY: updatedValues.y + r.startFieldId * 36 + 69,
|
||||
};
|
||||
} else if (r.endTableId === id) {
|
||||
return {
|
||||
...r,
|
||||
endX: updatedValues.x + 15,
|
||||
endY: updatedValues.y + r.endFieldId * 36 + 69,
|
||||
};
|
||||
newR.startX = updatedValues.x + 15;
|
||||
newR.startY = updatedValues.y + r.startFieldId * 36 + 69;
|
||||
}
|
||||
return r;
|
||||
if (r.endTableId === id) {
|
||||
newR.endX = updatedValues.x + 15;
|
||||
newR.endY = updatedValues.y + r.endFieldId * 36 + 69;
|
||||
}
|
||||
return newR;
|
||||
})
|
||||
);
|
||||
}
|
||||
|
@ -433,6 +433,10 @@ function jsonToMariaDB(obj) {
|
||||
.join("\n")}`;
|
||||
}
|
||||
|
||||
function jsonToSQLServer(obj) {
|
||||
return "TODO";
|
||||
}
|
||||
|
||||
function arrayIsEqual(arr1, arr2) {
|
||||
return JSON.stringify(arr1) === JSON.stringify(arr2);
|
||||
}
|
||||
@ -702,9 +706,9 @@ function validateDiagram(diagram) {
|
||||
visited.push(tableId);
|
||||
visitedTables.add(tableId);
|
||||
|
||||
diagram.relationships.forEach((relationship) => {
|
||||
if (relationship.startTableId === tableId) {
|
||||
checkCircularRelationships(relationship.endTableId, [...visited]);
|
||||
diagram.relationships.forEach((r) => {
|
||||
if (r.startTableId === tableId && r.startTableId !== r.endTableId) {
|
||||
checkCircularRelationships(r.endTableId, [...visited]);
|
||||
}
|
||||
});
|
||||
}
|
||||
@ -815,4 +819,5 @@ export {
|
||||
calcPath,
|
||||
jsonToSQLite,
|
||||
jsonToMariaDB,
|
||||
jsonToSQLServer,
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user