diagram - add references

This commit is contained in:
Jan Prochazka
2022-01-06 08:58:26 +01:00
parent 28db13c995
commit 00f1204bf0
4 changed files with 51 additions and 4 deletions

View File

@@ -247,6 +247,44 @@
: current.references,
};
});
updateFromDbInfo();
};
const handleAddTableReferences = table => {
if (!dbInfo) return;
const db = $dbInfo;
if (!db) return;
const dbTable = db.tables?.find(x => x.pureName == table.pureName && x.schemaName == table.schemaName);
if (!dbTable) return;
callChange(current => {
const newTables = [];
for (const fk of dbTable.foreignKeys || []) {
const existing = current.tables.find(x => x.pureName == fk.refTableName && x.schemaName == fk.refSchemaName);
if (!existing) {
const dst = db.tables.find(x => x.pureName == fk.refTableName && x.schemaName == fk.refSchemaName);
if (dst) newTables.push(dst);
}
}
for (const fk of dbTable.dependencies || []) {
const existing = current.tables.find(x => x.pureName == fk.pureName && x.schemaName == fk.schemaName);
if (!existing) {
const dst = db.tables.find(x => x.pureName == fk.pureName && x.schemaName == fk.schemaName);
if (dst) newTables.push(dst);
}
}
return {
...current,
tables: [
...current.tables,
...newTables.map(x => ({
...x,
designerId: uuidv1(),
})),
],
};
});
updateFromDbInfo();
};
const handleSelectColumn = column => {
@@ -408,6 +446,7 @@
onSelectColumn={handleSelectColumn}
onChangeColumn={handleChangeColumn}
onAddReferenceByColumn={handleAddReferenceByColumn}
onAddAllReferences={handleAddTableReferences}
onMoveReferences={recomputeReferencePositions}
{table}
onChangeTable={changeTable}