diff --git a/packages/types/dbinfo.d.ts b/packages/types/dbinfo.d.ts index 37b751a6a..73b4951f6 100644 --- a/packages/types/dbinfo.d.ts +++ b/packages/types/dbinfo.d.ts @@ -94,7 +94,19 @@ export interface TableInfo extends DatabaseObjectInfo { __isDynamicStructure?: boolean; } -export interface CollectionInfo extends DatabaseObjectInfo {} +export interface CollectionInfo extends DatabaseObjectInfo { + // all known columns with definition (only used in Cassandra) + knownColumns?: ColumnInfo[]; + + // unique combination of columns (should be contatenation of partitionKey and clusterKey) + uniqueKey?: ColumnReference[]; + + // partition key columns + partitionKey?: ColumnReference[] + + // unique key inside partition + clusterKey?: ColumnReference[]; +} export interface ViewInfo extends SqlObjectInfo { columns: ColumnInfo[]; diff --git a/plugins/dbgate-plugin-mongo/src/backend/Analyser.js b/plugins/dbgate-plugin-mongo/src/backend/Analyser.js index 8799f6c22..5c87fb305 100644 --- a/plugins/dbgate-plugin-mongo/src/backend/Analyser.js +++ b/plugins/dbgate-plugin-mongo/src/backend/Analyser.js @@ -34,9 +34,11 @@ class Analyser extends DatabaseAnalyser { ...collections.map((x, index) => ({ pureName: x.name, tableRowCount: stats[index]?.count, + uniqueKey: [{ columnName: '_id' }], })), ...views.map((x, index) => ({ pureName: x.name, + uniqueKey: [{ columnName: '_id' }], })), ], });