diff --git a/packages/server/src/sdk/app/datasources/datasources.ts b/packages/server/src/sdk/app/datasources/datasources.ts index fd0d291d91..d7c922412f 100644 --- a/packages/server/src/sdk/app/datasources/datasources.ts +++ b/packages/server/src/sdk/app/datasources/datasources.ts @@ -30,9 +30,15 @@ import { } from "../../../db/utils" import sdk from "../../index" import { setupCreationAuth as googleSetupCreationAuth } from "../../../integrations/googlesheets" +import { helpers } from "@budibase/shared-core" const ENV_VAR_PREFIX = "env." +function addDatasourceFlags(datasource: Datasource) { + datasource.isSQL = helpers.isSQL(datasource) + return datasource +} + export async function fetch(opts?: { enriched: boolean }): Promise { @@ -56,7 +62,7 @@ export async function fetch(opts?: { } as Datasource // Get external datasources - const datasources = ( + let datasources = ( await db.allDocs( getDatasourceParams(null, { include_docs: true, @@ -75,6 +81,7 @@ export async function fetch(opts?: { } } + datasources = datasources.map(datasource => addDatasourceFlags(datasource)) if (opts?.enriched) { const envVars = await getEnvironmentVariables() const promises = datasources.map(datasource => @@ -150,6 +157,7 @@ async function enrichDatasourceWithValues( } export async function enrich(datasource: Datasource) { + datasource = addDatasourceFlags(datasource) const { datasource: response } = await enrichDatasourceWithValues(datasource) return response } @@ -159,7 +167,8 @@ export async function get( opts?: { enriched: boolean } ): Promise { const appDb = context.getAppDB() - const datasource = await appDb.get(datasourceId) + let datasource = await appDb.get(datasourceId) + datasource = addDatasourceFlags(datasource) if (opts?.enriched) { return (await enrichDatasourceWithValues(datasource)).datasource } else { @@ -271,13 +280,14 @@ export function mergeConfigs(update: Datasource, old: Datasource) { export async function getExternalDatasources(): Promise { const db = context.getAppDB() - const externalDatasources = await db.allDocs( + let dsResponse = await db.allDocs( getDatasourcePlusParams(undefined, { include_docs: true, }) ) - return externalDatasources.rows.map(r => r.doc!) + const externalDatasources = dsResponse.rows.map(r => r.doc!) + return externalDatasources.map(datasource => addDatasourceFlags(datasource)) } export async function save( diff --git a/packages/server/src/sdk/app/rows/utils.ts b/packages/server/src/sdk/app/rows/utils.ts index 6e3e25364e..8aa017d238 100644 --- a/packages/server/src/sdk/app/rows/utils.ts +++ b/packages/server/src/sdk/app/rows/utils.ts @@ -14,7 +14,7 @@ import { makeExternalQuery } from "../../../integrations/base/query" import { Format } from "../../../api/controllers/view/exporters" import sdk from "../.." import { isRelationshipColumn } from "../../../db/utils" -import { SqlClient } from "../../../integrations/utils" +import { SqlClient, isSQL } from "../../../integrations/utils" const SQL_CLIENT_SOURCE_MAP: Record = { [SourceName.POSTGRES]: SqlClient.POSTGRES, @@ -37,7 +37,7 @@ const SQL_CLIENT_SOURCE_MAP: Record = { } export function getSQLClient(datasource: Datasource): SqlClient { - if (!datasource.isSQL) { + if (!isSQL(datasource)) { throw new Error("Cannot get SQL Client for non-SQL datasource") } const lookup = SQL_CLIENT_SOURCE_MAP[datasource.source]