From 30138570d5b9775577d8ecf141ae22c2d088eb1a Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Fri, 21 Jul 2023 11:32:45 +0200 Subject: [PATCH] Typex --- .../server/src/api/controllers/table/index.ts | 25 +++++++------------ .../src/sdk/app/datasources/datasources.ts | 12 +++++++++ packages/types/src/api/web/app/index.ts | 1 + packages/types/src/api/web/app/table.ts | 3 +++ 4 files changed, 25 insertions(+), 16 deletions(-) create mode 100644 packages/types/src/api/web/app/table.ts diff --git a/packages/server/src/api/controllers/table/index.ts b/packages/server/src/api/controllers/table/index.ts index 5ade77592a..c2cdbbb06c 100644 --- a/packages/server/src/api/controllers/table/index.ts +++ b/packages/server/src/api/controllers/table/index.ts @@ -6,9 +6,8 @@ import { isRows, } from "../../../utilities/schema" import { isExternalTable, isSQL } from "../../../integrations/utils" -import { getDatasourceParams } from "../../../db/utils" -import { context, events } from "@budibase/backend-core" -import { Table, UserCtx } from "@budibase/types" +import { events } from "@budibase/backend-core" +import { FetchTablesResponse, Table, UserCtx } from "@budibase/types" import sdk from "../../../sdk" import { jsonFromCsvString } from "../../../utilities/csv" import { builderSocket } from "../../../websockets" @@ -26,25 +25,19 @@ function pickApi({ tableId, table }: { tableId?: string; table?: Table }) { } // covers both internal and external -export async function fetch(ctx: UserCtx) { - const db = context.getAppDB() - +export async function fetch(ctx: UserCtx) { const internal = await sdk.tables.getAllInternalTables() - const externalTables = await db.allDocs( - getDatasourceParams("plus", { - include_docs: true, - }) - ) + const externalTables = await sdk.datasources.getExternalDatasources() - const external = externalTables.rows.flatMap(tableDoc => { - let entities = tableDoc.doc.entities + const external = externalTables.flatMap(table => { + let entities = table.entities if (entities) { - return Object.values(entities).map((entity: any) => ({ + return Object.values(entities).map((entity: Table) => ({ ...entity, type: "external", - sourceId: tableDoc.doc._id, - sql: isSQL(tableDoc.doc), + sourceId: table._id, + sql: isSQL(table), })) } else { return [] diff --git a/packages/server/src/sdk/app/datasources/datasources.ts b/packages/server/src/sdk/app/datasources/datasources.ts index 4145b1db63..993db04523 100644 --- a/packages/server/src/sdk/app/datasources/datasources.ts +++ b/packages/server/src/sdk/app/datasources/datasources.ts @@ -243,3 +243,15 @@ export function mergeConfigs(update: Datasource, old: Datasource) { return update } + +export async function getExternalDatasources(): Promise { + const db = context.getAppDB() + + const externalDatasources = await db.allDocs( + getDatasourceParams("plus", { + include_docs: true, + }) + ) + + return externalDatasources.rows.map(r => r.doc) +} diff --git a/packages/types/src/api/web/app/index.ts b/packages/types/src/api/web/app/index.ts index 5d12a31903..9c4aa35f57 100644 --- a/packages/types/src/api/web/app/index.ts +++ b/packages/types/src/api/web/app/index.ts @@ -2,3 +2,4 @@ export * from "./backup" export * from "./datasource" export * from "./view" export * from "./rows" +export * from "./table" diff --git a/packages/types/src/api/web/app/table.ts b/packages/types/src/api/web/app/table.ts new file mode 100644 index 0000000000..1044398500 --- /dev/null +++ b/packages/types/src/api/web/app/table.ts @@ -0,0 +1,3 @@ +import { Table } from "../../../documents" + +export type FetchTablesResponse = Table[]