diff --git a/packages/tools/src/structureTools.ts b/packages/tools/src/structureTools.ts index aabcae760..8c6d92483 100644 --- a/packages/tools/src/structureTools.ts +++ b/packages/tools/src/structureTools.ts @@ -1,4 +1,4 @@ -import { DatabaseInfo } from 'dbgate-types'; +import { DatabaseInfo, TableInfo } from 'dbgate-types'; import _flatten from 'lodash/flatten'; export function addTableDependencies(db: DatabaseInfo): DatabaseInfo { @@ -12,50 +12,54 @@ export function addTableDependencies(db: DatabaseInfo): DatabaseInfo { }; } -function fillTableExtendedInfo(db: DatabaseInfo): DatabaseInfo { +export function extendTableInfo(table: TableInfo): TableInfo { + return { + ...table, + objectTypeField: 'tables', + columns: (table.columns || []).map(column => ({ + pureName: table.pureName, + schemaName: table.schemaName, + ...column, + })), + primaryKey: table.primaryKey + ? { + ...table.primaryKey, + pureName: table.pureName, + schemaName: table.schemaName, + constraintType: 'primaryKey', + } + : undefined, + foreignKeys: (table.foreignKeys || []).map(cnt => ({ + ...cnt, + pureName: table.pureName, + schemaName: table.schemaName, + constraintType: 'foreignKey', + })), + indexes: (table.indexes || []).map(cnt => ({ + ...cnt, + pureName: table.pureName, + schemaName: table.schemaName, + constraintType: 'index', + })), + checks: (table.checks || []).map(cnt => ({ + ...cnt, + pureName: table.pureName, + schemaName: table.schemaName, + constraintType: 'check', + })), + uniques: (table.uniques || []).map(cnt => ({ + ...cnt, + pureName: table.pureName, + schemaName: table.schemaName, + constraintType: 'unique', + })), + }; +} + +function fillDatabaseExtendedInfo(db: DatabaseInfo): DatabaseInfo { return { ...db, - tables: (db.tables || []).map(obj => ({ - ...obj, - objectTypeField: 'tables', - columns: (obj.columns || []).map(column => ({ - pureName: obj.pureName, - schemaName: obj.schemaName, - ...column, - })), - primaryKey: obj.primaryKey - ? { - ...obj.primaryKey, - pureName: obj.pureName, - schemaName: obj.schemaName, - constraintType: 'primaryKey', - } - : undefined, - foreignKeys: (obj.foreignKeys || []).map(cnt => ({ - ...cnt, - pureName: obj.pureName, - schemaName: obj.schemaName, - constraintType: 'foreignKey', - })), - indexes: (obj.indexes || []).map(cnt => ({ - ...cnt, - pureName: obj.pureName, - schemaName: obj.schemaName, - constraintType: 'index', - })), - checks: (obj.checks || []).map(cnt => ({ - ...cnt, - pureName: obj.pureName, - schemaName: obj.schemaName, - constraintType: 'check', - })), - uniques: (obj.uniques || []).map(cnt => ({ - ...cnt, - pureName: obj.pureName, - schemaName: obj.schemaName, - constraintType: 'unique', - })), - })), + tables: (db.tables || []).map(extendTableInfo), collections: (db.collections || []).map(obj => ({ ...obj, objectTypeField: 'collections', @@ -84,5 +88,5 @@ function fillTableExtendedInfo(db: DatabaseInfo): DatabaseInfo { } export function extendDatabaseInfo(db: DatabaseInfo): DatabaseInfo { - return fillTableExtendedInfo(addTableDependencies(db)); + return fillDatabaseExtendedInfo(addTableDependencies(db)); } diff --git a/packages/types/dbinfo.d.ts b/packages/types/dbinfo.d.ts index a96c21916..f4fdaf669 100644 --- a/packages/types/dbinfo.d.ts +++ b/packages/types/dbinfo.d.ts @@ -62,12 +62,12 @@ export interface DatabaseObjectInfo extends NamedObjectInfo { createDate?: string; modifyDate?: string; hashCode?: string; + objectTypeField?: string; } export interface SqlObjectInfo extends DatabaseObjectInfo { createSql?: string; requiresFormat?: boolean; // SQL is human unreadable, requires formatting (eg. MySQL views) - objectTypeField?: string; } export interface TableInfo extends DatabaseObjectInfo { diff --git a/packages/web/src/tabs/TableStructureTab.svelte b/packages/web/src/tabs/TableStructureTab.svelte index 572aab2cb..a4a98b238 100644 --- a/packages/web/src/tabs/TableStructureTab.svelte +++ b/packages/web/src/tabs/TableStructureTab.svelte @@ -28,7 +28,13 @@