mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-17 22:36:01 +00:00
dependencies
This commit is contained in:
@@ -13,6 +13,10 @@ module.exports = {
|
||||
async tableInfo({ conid, database, schemaName, pureName }) {
|
||||
const opened = await databaseConnections.ensureOpened(conid, database);
|
||||
const table = opened.structure.tables.find(x => x.pureName == pureName && x.schemaName == schemaName);
|
||||
return table;
|
||||
const allForeignKeys = _.flatten(opened.structure.tables.map(x => x.foreignKeys));
|
||||
return {
|
||||
...table,
|
||||
dependencies: allForeignKeys.filter(x => x.refSchemaName == schemaName && x.refTableName == pureName),
|
||||
};
|
||||
},
|
||||
};
|
||||
|
||||
@@ -16,7 +16,7 @@ function extractPrimaryKeys(table, pkColumns) {
|
||||
const filtered = pkColumns.filter(byTableFilter(table));
|
||||
if (filtered.length == 0) return undefined;
|
||||
return {
|
||||
constraintName: filtered[0].constraintName,
|
||||
..._.pick(filtered[0], ['constraintName', 'schemaName', 'pureName']),
|
||||
constraintType: 'primaryKey',
|
||||
columns: filtered.map(fp.pick('columnName')),
|
||||
};
|
||||
@@ -27,7 +27,15 @@ function extractForeignKeys(table, fkColumns) {
|
||||
return _.keys(grouped).map(constraintName => ({
|
||||
constraintName,
|
||||
constraintType: 'foreignKey',
|
||||
..._.pick(fkColumns[0], ['refSchemaName', 'refTableName', 'updateAction', 'deleteAction']),
|
||||
..._.pick(grouped[constraintName][0], [
|
||||
'constraintName',
|
||||
'schemaName',
|
||||
'pureName',
|
||||
'refSchemaName',
|
||||
'refTableName',
|
||||
'updateAction',
|
||||
'deleteAction',
|
||||
]),
|
||||
columns: grouped[constraintName].map(fp.pick(['columnName', 'refColumnName'])),
|
||||
}));
|
||||
}
|
||||
|
||||
3
types/dbinfo.d.ts
vendored
3
types/dbinfo.d.ts
vendored
@@ -8,7 +8,7 @@ export interface ColumnReference {
|
||||
refColumnName?: string;
|
||||
}
|
||||
|
||||
export interface ConstraintInfo {
|
||||
export interface ConstraintInfo extends NamedObjectInfo {
|
||||
constraintName: string;
|
||||
constraintType: string;
|
||||
}
|
||||
@@ -44,6 +44,7 @@ export interface TableInfo extends NamedObjectInfo {
|
||||
columns: ColumnInfo[];
|
||||
primaryKey?: PrimaryKeyInfo;
|
||||
foreignKeys: ForeignKeyInfo[];
|
||||
dependencies?: ForeignKeyInfo[];
|
||||
}
|
||||
export interface DatabaseInfo {
|
||||
tables: TableInfo[];
|
||||
|
||||
@@ -24,7 +24,7 @@ export default function TableStructureTab({ conid, database, schemaName, pureNam
|
||||
params: { conid, database, schemaName, pureName },
|
||||
});
|
||||
if (!tableInfo) return null;
|
||||
const { columns, primaryKey, foreignKeys } = tableInfo;
|
||||
const { columns, primaryKey, foreignKeys, dependencies } = tableInfo;
|
||||
return (
|
||||
<WhitePage>
|
||||
<ObjectListControl
|
||||
@@ -102,6 +102,22 @@ export default function TableStructureTab({ conid, database, schemaName, pureNam
|
||||
<TableColumn fieldName="updateAction" header="ON UPDATE" />
|
||||
<TableColumn fieldName="deleteAction" header="ON DELETE" />
|
||||
</ObjectListControl>
|
||||
|
||||
<ObjectListControl collection={dependencies} makeAppObj={constraintAppObject} title="Dependencies">
|
||||
<TableColumn
|
||||
fieldName="baseColumns"
|
||||
header="Base columns"
|
||||
formatter={row => row.columns.map(x => x.columnName).join(', ')}
|
||||
/>
|
||||
<TableColumn fieldName="baseTable" header="Base table" formatter={row => row.pureName} />
|
||||
<TableColumn
|
||||
fieldName="refColumns"
|
||||
header="Referenced columns"
|
||||
formatter={row => row.columns.map(x => x.refColumnName).join(', ')}
|
||||
/>
|
||||
<TableColumn fieldName="updateAction" header="ON UPDATE" />
|
||||
<TableColumn fieldName="deleteAction" header="ON DELETE" />
|
||||
</ObjectListControl>
|
||||
</WhitePage>
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user