Handle invalid references
This commit is contained in:
parent
10fae6d518
commit
028e80a487
@ -12,6 +12,7 @@ import {
|
|||||||
SelectContext,
|
SelectContext,
|
||||||
} from "../pages/editor";
|
} from "../pages/editor";
|
||||||
import Note from "./note";
|
import Note from "./note";
|
||||||
|
import { Toast } from "@douyinfe/semi-ui";
|
||||||
|
|
||||||
export default function Canvas(props) {
|
export default function Canvas(props) {
|
||||||
const { tables, updateTable, relationships, addRelationship } =
|
const { tables, updateTable, relationships, addRelationship } =
|
||||||
@ -325,6 +326,13 @@ export default function Canvas(props) {
|
|||||||
const handleLinking = () => {
|
const handleLinking = () => {
|
||||||
if (onRect.tableId < 0) return;
|
if (onRect.tableId < 0) return;
|
||||||
if (onRect.field < 0) return;
|
if (onRect.field < 0) return;
|
||||||
|
if (
|
||||||
|
tables[line.startTableId].fields[line.startFieldId].type !==
|
||||||
|
tables[onRect.tableId].fields[onRect.field].type
|
||||||
|
) {
|
||||||
|
Toast.info("Cannot connect");
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (
|
if (
|
||||||
line.startTableId === onRect.tableId &&
|
line.startTableId === onRect.tableId &&
|
||||||
line.startFieldId === onRect.field
|
line.startFieldId === onRect.field
|
||||||
@ -339,9 +347,7 @@ export default function Canvas(props) {
|
|||||||
endY: tables[onRect.tableId].y + onRect.field * 36 + 69,
|
endY: tables[onRect.tableId].y + onRect.field * 36 + 69,
|
||||||
name: `${tables[line.startTableId].name}_FK_${
|
name: `${tables[line.startTableId].name}_FK_${
|
||||||
tables[line.startTableId].fields[line.startFieldId].name
|
tables[line.startTableId].fields[line.startFieldId].name
|
||||||
}_to_${
|
}_to_${tables[onRect.tableId].fields[onRect.field].name}`,
|
||||||
tables[onRect.tableId].fields[onRect.field].name
|
|
||||||
}`,
|
|
||||||
id: relationships.length,
|
id: relationships.length,
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
@ -309,11 +309,23 @@ function validateDiagram(diagram) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
const duplicateFKName = {};
|
const duplicateFKName = {};
|
||||||
diagram.relationships.forEach((relationship) => {
|
diagram.relationships.forEach((r) => {
|
||||||
if (duplicateFKName[relationship.name]) {
|
if (duplicateFKName[r.name]) {
|
||||||
issues.push(`Duplicate relationship by the name "${relationship.name}"`);
|
issues.push(`Duplicate reference by the name "${r.name}"`);
|
||||||
} else {
|
} else {
|
||||||
duplicateFKName[relationship.name] = true;
|
duplicateFKName[r.name] = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (
|
||||||
|
diagram.tables[r.startTableId].fields[r.startFieldId].type !==
|
||||||
|
diagram.tables[r.endTableId].fields[r.endFieldId].type
|
||||||
|
) {
|
||||||
|
issues.push(`Referencing column "${
|
||||||
|
diagram.tables[r.endTableId].fields[r.endFieldId].name
|
||||||
|
}" and referenced column "${
|
||||||
|
diagram.tables[r.startTableId].fields[r.startFieldId].name
|
||||||
|
}" are incompatible.
|
||||||
|
`);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user