Skip to content

Commit c4cc16a

Browse files
renamed limitedEntities and only keeping table and model names/ids, no fields (#278)
1 parent 94f598b commit c4cc16a

File tree

4 files changed

+36
-25
lines changed

4 files changed

+36
-25
lines changed

apps/src/metabase/helpers/DOMToState.ts

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import { getMBQLAppState } from './mbql/appState';
1919
import { isMBQLPageUrl, MBQLInfo } from './mbql/utils';
2020
import { getModelsWithFields, getSelectedAndRelevantModels, modifySqlForMetabaseModels} from './metabaseModels';
2121
import { MetabaseAppStateSQLEditorV2, MetabaseAppStateType, processCard } from './analystModeTypes';
22+
import { MetabaseTableOrModel } from './metabaseAPITypes';
2223

2324
const {modifySqlForMxModels} = catalogAsModels
2425

@@ -41,6 +42,7 @@ interface ExtractedTable {
4142
id: number;
4243
}
4344

45+
4446
export interface MetabaseAppStateSQLEditor {
4547
type: MetabaseAppStateType.SQLEditor;
4648
availableDatabases?: string[];
@@ -65,7 +67,7 @@ export interface MetabaseAppStateSQLEditor {
6567
metabaseOrigin?: string;
6668
metabaseUrl?: string;
6769
isEmbedded: boolean;
68-
relevantEntitiesWithFields?: FormattedTable[];
70+
limitedEntities?: MetabaseTableOrModel[];
6971
currentCard?: Card;
7072
}
7173

@@ -77,7 +79,7 @@ export interface MetabaseAppStateDashboard extends DashboardInfo {
7779
metabaseOrigin?: string;
7880
metabaseUrl?: string;
7981
isEmbedded: boolean;
80-
relevantEntitiesWithFields?: FormattedTable[];
82+
limitedEntities?: MetabaseTableOrModel[];
8183
}
8284

8385
export interface MetabaseAppStateMBQLEditor extends MBQLInfo {
@@ -114,14 +116,14 @@ export async function convertDOMtoStateSQLQueryV2() : Promise<MetabaseAppStateSQ
114116
const currentCard = processCard(currentCardRaw);
115117
const metabaseOrigin = new URL(metabaseUrl).origin;
116118
const isEmbedded = getParsedIframeInfo().isEmbedded
117-
const relevantEntitiesWithFields: FormattedTable[] = []
119+
const limitedEntities: MetabaseTableOrModel[] = []
118120
return {
119121
type: MetabaseAppStateType.SQLEditor,
120122
version: '2',
121123
metabaseOrigin,
122124
metabaseUrl,
123125
isEmbedded,
124-
relevantEntitiesWithFields,
126+
limitedEntities,
125127
currentCard,
126128
outputMarkdown,
127129
parameterValues,
@@ -203,21 +205,20 @@ export async function convertDOMtoStateSQLQuery() {
203205
metabaseAppStateSQLEditor.sqlErrorMessage = sqlErrorMessage;
204206
}
205207
if (appSettings.analystMode && appSettings.manuallyLimitContext) {
206-
const relevantTablesWithFieldsAndType = relevantTablesWithFields.map(table => ({
207-
...table,
208+
const limitToTables: MetabaseTableOrModel[] = relevantTablesWithFields.map(table => ({
208209
type: 'table',
210+
id: table.id,
211+
name: table.name,
212+
schema: table.schema,
213+
description: table.description,
209214
}))
210-
const relevantModelsWithFieldsAndType = relevantModelsWithFields.map(model => ({
211-
...model,
215+
const limitToModels: MetabaseTableOrModel[] = relevantModels.map(model => ({
212216
type: 'model',
213-
name: model.modelName,
214217
id: model.modelId,
215-
schema: undefined,
216-
table: undefined,
217-
modelId: undefined,
218-
modelName: undefined,
218+
name: model.name,
219+
description: model.description,
219220
}))
220-
metabaseAppStateSQLEditor.relevantEntitiesWithFields = [...relevantTablesWithFieldsAndType, ...relevantModelsWithFieldsAndType];
221+
metabaseAppStateSQLEditor.limitedEntities = [...limitToTables, ...limitToModels];
221222
}
222223
return metabaseAppStateSQLEditor;
223224
}

apps/src/metabase/helpers/analystModeTypes.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { omit, pick } from "lodash";
22
import { DashboardInfo } from "./dashboard/types";
33
import { Card, FormattedTable, ParameterValues } from "./types";
4+
import { MetabaseTableOrModel } from "./metabaseAPITypes";
45

56
export enum MetabaseAppStateType {
67
SQLEditor = 'metabaseSQLEditor',
@@ -15,7 +16,7 @@ interface MetabaseAppStateBase {
1516
metabaseOrigin: string;
1617
metabaseUrl: string;
1718
isEmbedded: boolean;
18-
relevantEntitiesWithFields: FormattedTable[];
19+
limitedEntities: MetabaseTableOrModel[];
1920
}
2021

2122
export interface MetabaseAppStateSQLEditorV2 extends MetabaseAppStateBase {

apps/src/metabase/helpers/dashboard/appState.ts

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import { getTablesFromSqlRegex, TableAndSchema } from '../parseSql';
1212
import { getTableContextYAML } from '../catalog';
1313
import { getModelsFromSql, getModelsWithFields, modifySqlForMetabaseModels, replaceLLMFriendlyIdentifiersInSqlWithModels } from '../metabaseModels';
1414
import { MetabaseAppStateType } from '../analystModeTypes';
15+
import { MetabaseTableOrModel } from '../metabaseAPITypes';
1516

1617
// Removed: const { getMetabaseState } = RPCs - using centralized state functions instead
1718

@@ -327,21 +328,20 @@ export async function getDashboardAppState(): Promise<MetabaseAppStateDashboard
327328
isEmbedded: getParsedIframeInfo().isEmbedded,
328329
};
329330
if (appSettings.analystMode && appSettings.manuallyLimitContext) {
330-
const relevantTablesWithFieldsAndType = relevantTablesWithFields.map(table => ({
331-
...table,
331+
const limitToTables: MetabaseTableOrModel[] = relevantTablesWithFields.map(table => ({
332332
type: 'table',
333+
id: table.id,
334+
name: table.name,
335+
schema: table.schema,
336+
description: table.description,
333337
}))
334-
const relevantModelsWithFieldsAndType = relevantModelsWithFields.map(model => ({
335-
...model,
338+
const limitToModels: MetabaseTableOrModel[] = dedupedCardAndSelectedModels.map(model => ({
336339
type: 'model',
337-
name: model.modelName,
338340
id: model.modelId,
339-
schema: undefined,
340-
table: undefined,
341-
modelId: undefined,
342-
modelName: undefined,
341+
name: model.name,
342+
description: model.description,
343343
}))
344-
dashboardAppState.relevantEntitiesWithFields = [...relevantTablesWithFieldsAndType, ...relevantModelsWithFieldsAndType];
344+
dashboardAppState.limitedEntities = [...limitToTables, ...limitToModels];
345345
}
346346
return dashboardAppState
347347
}

apps/src/metabase/helpers/metabaseAPITypes.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,15 @@ export interface MetabaseModel {
6262
dbId: number;
6363
}
6464

65+
66+
export interface MetabaseTableOrModel {
67+
type: 'table' | 'model'
68+
id: number | string
69+
description?: string
70+
schema?: string
71+
name: string
72+
}
73+
6574
export interface DatabaseInfo {
6675
name: string;
6776
description: string;

0 commit comments

Comments
 (0)