mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-23 15:06:01 +00:00
diagram - add references
This commit is contained in:
@@ -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}
|
||||
|
||||
Reference in New Issue
Block a user