mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-29 23:53:57 +00:00
dependencies
This commit is contained in:
@@ -13,6 +13,10 @@ module.exports = {
|
|||||||
async tableInfo({ conid, database, schemaName, pureName }) {
|
async tableInfo({ conid, database, schemaName, pureName }) {
|
||||||
const opened = await databaseConnections.ensureOpened(conid, database);
|
const opened = await databaseConnections.ensureOpened(conid, database);
|
||||||
const table = opened.structure.tables.find(x => x.pureName == pureName && x.schemaName == schemaName);
|
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));
|
const filtered = pkColumns.filter(byTableFilter(table));
|
||||||
if (filtered.length == 0) return undefined;
|
if (filtered.length == 0) return undefined;
|
||||||
return {
|
return {
|
||||||
constraintName: filtered[0].constraintName,
|
..._.pick(filtered[0], ['constraintName', 'schemaName', 'pureName']),
|
||||||
constraintType: 'primaryKey',
|
constraintType: 'primaryKey',
|
||||||
columns: filtered.map(fp.pick('columnName')),
|
columns: filtered.map(fp.pick('columnName')),
|
||||||
};
|
};
|
||||||
@@ -27,7 +27,15 @@ function extractForeignKeys(table, fkColumns) {
|
|||||||
return _.keys(grouped).map(constraintName => ({
|
return _.keys(grouped).map(constraintName => ({
|
||||||
constraintName,
|
constraintName,
|
||||||
constraintType: 'foreignKey',
|
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'])),
|
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;
|
refColumnName?: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ConstraintInfo {
|
export interface ConstraintInfo extends NamedObjectInfo {
|
||||||
constraintName: string;
|
constraintName: string;
|
||||||
constraintType: string;
|
constraintType: string;
|
||||||
}
|
}
|
||||||
@@ -44,6 +44,7 @@ export interface TableInfo extends NamedObjectInfo {
|
|||||||
columns: ColumnInfo[];
|
columns: ColumnInfo[];
|
||||||
primaryKey?: PrimaryKeyInfo;
|
primaryKey?: PrimaryKeyInfo;
|
||||||
foreignKeys: ForeignKeyInfo[];
|
foreignKeys: ForeignKeyInfo[];
|
||||||
|
dependencies?: ForeignKeyInfo[];
|
||||||
}
|
}
|
||||||
export interface DatabaseInfo {
|
export interface DatabaseInfo {
|
||||||
tables: TableInfo[];
|
tables: TableInfo[];
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ export default function TableStructureTab({ conid, database, schemaName, pureNam
|
|||||||
params: { conid, database, schemaName, pureName },
|
params: { conid, database, schemaName, pureName },
|
||||||
});
|
});
|
||||||
if (!tableInfo) return null;
|
if (!tableInfo) return null;
|
||||||
const { columns, primaryKey, foreignKeys } = tableInfo;
|
const { columns, primaryKey, foreignKeys, dependencies } = tableInfo;
|
||||||
return (
|
return (
|
||||||
<WhitePage>
|
<WhitePage>
|
||||||
<ObjectListControl
|
<ObjectListControl
|
||||||
@@ -102,6 +102,22 @@ export default function TableStructureTab({ conid, database, schemaName, pureNam
|
|||||||
<TableColumn fieldName="updateAction" header="ON UPDATE" />
|
<TableColumn fieldName="updateAction" header="ON UPDATE" />
|
||||||
<TableColumn fieldName="deleteAction" header="ON DELETE" />
|
<TableColumn fieldName="deleteAction" header="ON DELETE" />
|
||||||
</ObjectListControl>
|
</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>
|
</WhitePage>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user