Skip to content

Commit 3b3d7b0

Browse files
committed
Store cards in dbInfo
1 parent af5f2e1 commit 3b3d7b0

File tree

4 files changed

+41
-3
lines changed

4 files changed

+41
-3
lines changed

apps/src/metabase/appState.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import { cloneDeep, get, isEmpty, memoize, times } from "lodash";
77
import { DOMQueryMapResponse } from "extension/types";
88
import { subscribe, setInstructions, dispatch } from "web";
99
import { getRelevantTablesForSelectedDb } from "./helpers/getDatabaseSchema";
10-
import { getDatabaseTablesAndModelsWithoutFields, getDatabaseInfo } from "./helpers/metabaseAPIHelpers";
10+
import { getDatabaseTablesAndModelsWithoutFields, getDatabaseInfo, getDatabaseTablesModelsCardsWithoutFields } from "./helpers/metabaseAPIHelpers";
1111
import { querySelectorMap } from "./helpers/querySelectorMap";
1212
import { getSelectedDbId } from "./helpers/metabaseStateAPI";
1313
import { abortable, createRunner, handlePromise } from "../common/utils";
@@ -547,7 +547,7 @@ Here's what I need modified:
547547
const isCancelled = () => taskStatus.status === 'cancelled';
548548
const [relevantTables, dbInfo] = await Promise.all([
549549
handlePromise(abortable(getRelevantTablesForSelectedDb(dbId), isCancelled), "Failed to get relevant tables", []),
550-
handlePromise(abortable(getDatabaseTablesAndModelsWithoutFields(dbId), isCancelled), "Failed to get database info", DB_INFO_DEFAULT)
550+
handlePromise(abortable(getDatabaseTablesModelsCardsWithoutFields(dbId), isCancelled), "Failed to get database info", DB_INFO_DEFAULT)
551551
])
552552
state.getState().update((oldState) => ({
553553
...oldState,

apps/src/metabase/helpers/metabaseAPIHelpers.ts

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -258,7 +258,8 @@ export async function getAllCardsAndModels(forceRefresh = false, currentDBId: nu
258258
}
259259

260260
const cardsForProcessing = finalCards;
261-
const processedCards = map(cardsForProcessing, processCard);
261+
// const processedCards = map(cardsForProcessing, processCard);
262+
const processedCards = cardsForProcessing.map(processCard)
262263

263264
console.log('Processed cards:', processedCards);
264265
const tables: Record<string, TableAndSchema> = {};
@@ -385,6 +386,31 @@ export async function getDatabaseTablesAndModelsWithoutFields(db_id: number, for
385386
};
386387
}
387388

389+
export async function getDatabaseTablesModelsCardsWithoutFields(db_id: number, forceRefreshModels: boolean = false, forceRefreshTables: boolean = false): Promise<DatabaseInfoWithTablesAndModels> {
390+
const tablesAndDetails = await getRelevantTablesAndDetailsForSelectedDb(db_id, forceRefreshTables);
391+
const cardsAndModels = await getAllCardsAndModels(forceRefreshModels, db_id);
392+
const allCardsAndModels = cardsAndModels.cards || [];
393+
const cards = allCardsAndModels.filter(card => card.type == 'question');
394+
const models = allCardsAndModels.filter(card => card.type !== 'question');
395+
396+
return {
397+
...tablesAndDetails,
398+
models: models.map((model) => ({
399+
name: model.name,
400+
collectionId: model.collection_id || null,
401+
collectionName: get(model.collection, 'name', ''),
402+
modelId: model.id,
403+
description: model.description || undefined,
404+
dbId: db_id
405+
})),
406+
cards: cards.map(card => ({
407+
name: card.name,
408+
id: card.id,
409+
description: card.description,
410+
}))
411+
};
412+
}
413+
388414
export function handleEmpty<T>(promise: Promise<T>, defaultValue: T): Promise<T> {
389415
return Promise.resolve(promise).catch(() => defaultValue);
390416
}

apps/src/metabase/helpers/metabaseAPITypes.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,12 @@ export interface MetabaseModel {
6363
dbId: number;
6464
}
6565

66+
export interface MetabaseCard {
67+
name: string;
68+
id: number;
69+
descption?: string;
70+
}
71+
6672

6773
export interface MetabaseTableOrModel {
6874
type: 'table' | 'model'
@@ -88,6 +94,7 @@ export interface DatabaseInfo {
8894
export interface DatabaseInfoWithTablesAndModels extends DatabaseInfo {
8995
tables: FormattedTable[];
9096
models: MetabaseModel[];
97+
cards: MetabaseCard[];
9198
}
9299

93100
export interface DatabaseResponse {

apps/src/metabase/helpers/types.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,11 @@ export interface Card {
5757
visualization_settings: visualizationSettings;
5858
type: string;
5959
parameters?: QBParameters;
60+
name: string;
61+
id: number;
62+
description?: string;
63+
collection_id?: number;
64+
collection?: object;
6065
}
6166

6267
export interface SavedCard extends Card {

0 commit comments

Comments
 (0)