From 68719f1dda7126f391876b2a4f695e173310b565 Mon Sep 17 00:00:00 2001 From: Conor Webb Date: Thu, 22 Feb 2024 11:00:02 +0000 Subject: [PATCH 1/6] Remove Airtable from data source ui --- packages/server/src/api/controllers/integration.ts | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/packages/server/src/api/controllers/integration.ts b/packages/server/src/api/controllers/integration.ts index 23defac831..5ab29f0329 100644 --- a/packages/server/src/api/controllers/integration.ts +++ b/packages/server/src/api/controllers/integration.ts @@ -2,8 +2,16 @@ import { getDefinition, getDefinitions } from "../../integrations" import { BBContext } from "@budibase/types" export async function fetch(ctx: BBContext) { - ctx.status = 200 - ctx.body = await getDefinitions() + try { + const definitions = await getDefinitions() + delete definitions.AIRTABLE + ctx.status = 200 + ctx.body = definitions + } catch (error) { + console.error('Error fetching definitions:', error) + ctx.status = 500 + ctx.body = { error: 'Internal server error' } + } } export async function find(ctx: BBContext) { From b5d44dfcfd66f1a230b9b5473971fd33175cae82 Mon Sep 17 00:00:00 2001 From: Conor Webb Date: Thu, 22 Feb 2024 11:16:38 +0000 Subject: [PATCH 2/6] Fixed linting issue --- packages/server/src/api/controllers/integration.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/server/src/api/controllers/integration.ts b/packages/server/src/api/controllers/integration.ts index 5ab29f0329..935148ff2f 100644 --- a/packages/server/src/api/controllers/integration.ts +++ b/packages/server/src/api/controllers/integration.ts @@ -8,9 +8,9 @@ export async function fetch(ctx: BBContext) { ctx.status = 200 ctx.body = definitions } catch (error) { - console.error('Error fetching definitions:', error) + console.error("Error fetching definitions:", error) ctx.status = 500 - ctx.body = { error: 'Internal server error' } + ctx.body = { error: "Internal server error" } } } From 2b36b0337f563b95070241affdf70553f177fbb5 Mon Sep 17 00:00:00 2001 From: Conor Webb Date: Thu, 22 Feb 2024 13:32:16 +0000 Subject: [PATCH 3/6] Refactored based on feedback. Added a check to find. --- .../server/src/api/controllers/integration.ts | 22 ++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/packages/server/src/api/controllers/integration.ts b/packages/server/src/api/controllers/integration.ts index 935148ff2f..02cb869fe0 100644 --- a/packages/server/src/api/controllers/integration.ts +++ b/packages/server/src/api/controllers/integration.ts @@ -1,21 +1,37 @@ import { getDefinition, getDefinitions } from "../../integrations" import { BBContext } from "@budibase/types" -export async function fetch(ctx: BBContext) { +async function fetchDefinitions(ctx: BBContext) { try { const definitions = await getDefinitions() delete definitions.AIRTABLE ctx.status = 200 ctx.body = definitions + + return definitions } catch (error) { console.error("Error fetching definitions:", error) ctx.status = 500 ctx.body = { error: "Internal server error" } + + return {} } } +export async function fetch(ctx: BBContext) { + await fetchDefinitions(ctx) +} + export async function find(ctx: BBContext) { const def = await getDefinition(ctx.params.type) - ctx.body = def - ctx.status = 200 + if (ctx.params.type in await fetchDefinitions(ctx)) { + ctx.body = def; + ctx.status = 200; + } else { + ctx.status = 400; + ctx.body = { + message: `Cannot find definition '${ctx.params.type}'`, + status: 400, + }; + } } From eb9bf3ef765407bc02735e80f011451fad4b9eaf Mon Sep 17 00:00:00 2001 From: Conor Webb Date: Thu, 22 Feb 2024 13:38:25 +0000 Subject: [PATCH 4/6] Fixed linting issues --- packages/server/src/api/controllers/integration.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/server/src/api/controllers/integration.ts b/packages/server/src/api/controllers/integration.ts index 02cb869fe0..4f90e1217c 100644 --- a/packages/server/src/api/controllers/integration.ts +++ b/packages/server/src/api/controllers/integration.ts @@ -13,7 +13,7 @@ async function fetchDefinitions(ctx: BBContext) { console.error("Error fetching definitions:", error) ctx.status = 500 ctx.body = { error: "Internal server error" } - + return {} } } @@ -24,14 +24,14 @@ export async function fetch(ctx: BBContext) { export async function find(ctx: BBContext) { const def = await getDefinition(ctx.params.type) - if (ctx.params.type in await fetchDefinitions(ctx)) { - ctx.body = def; - ctx.status = 200; + if (ctx.params.type in (await fetchDefinitions(ctx))) { + ctx.body = def + ctx.status = 200 } else { - ctx.status = 400; + ctx.status = 400 ctx.body = { message: `Cannot find definition '${ctx.params.type}'`, status: 400, - }; + } } } From 5dd87265d283327585112876a2adc5e135077103 Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Thu, 22 Feb 2024 17:37:03 +0000 Subject: [PATCH 5/6] PR comments. --- .../server/src/api/controllers/integration.ts | 43 +++++-------------- 1 file changed, 11 insertions(+), 32 deletions(-) diff --git a/packages/server/src/api/controllers/integration.ts b/packages/server/src/api/controllers/integration.ts index 4f90e1217c..f7a4f9ee28 100644 --- a/packages/server/src/api/controllers/integration.ts +++ b/packages/server/src/api/controllers/integration.ts @@ -1,37 +1,16 @@ import { getDefinition, getDefinitions } from "../../integrations" -import { BBContext } from "@budibase/types" +import { SourceName, UserCtx } from "@budibase/types" -async function fetchDefinitions(ctx: BBContext) { - try { - const definitions = await getDefinitions() - delete definitions.AIRTABLE - ctx.status = 200 - ctx.body = definitions +export async function fetch(ctx: UserCtx) { + const definitions = await getDefinitions() + delete definitions.AIRTABLE + ctx.body = definitions +} - return definitions - } catch (error) { - console.error("Error fetching definitions:", error) - ctx.status = 500 - ctx.body = { error: "Internal server error" } - - return {} - } -} - -export async function fetch(ctx: BBContext) { - await fetchDefinitions(ctx) -} - -export async function find(ctx: BBContext) { - const def = await getDefinition(ctx.params.type) - if (ctx.params.type in (await fetchDefinitions(ctx))) { - ctx.body = def - ctx.status = 200 - } else { - ctx.status = 400 - ctx.body = { - message: `Cannot find definition '${ctx.params.type}'`, - status: 400, - } +export async function find(ctx: UserCtx) { + const sourceType = ctx.params?.type + if (sourceType === SourceName.AIRTABLE) { + ctx.throw(400, `Invalid source type - ${sourceType} is not supported.`) } + ctx.body = await getDefinition(ctx.params.type) } From c45c3ffb8f694a73c7ee06c0ffd1daaf676f1dbb Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Thu, 22 Feb 2024 17:54:26 +0000 Subject: [PATCH 6/6] Setting disabled source types. --- packages/server/src/api/controllers/integration.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/packages/server/src/api/controllers/integration.ts b/packages/server/src/api/controllers/integration.ts index f7a4f9ee28..9cfde31e4c 100644 --- a/packages/server/src/api/controllers/integration.ts +++ b/packages/server/src/api/controllers/integration.ts @@ -1,15 +1,19 @@ import { getDefinition, getDefinitions } from "../../integrations" import { SourceName, UserCtx } from "@budibase/types" +const DISABLED_EXTERNAL_INTEGRATIONS = [SourceName.AIRTABLE] + export async function fetch(ctx: UserCtx) { const definitions = await getDefinitions() - delete definitions.AIRTABLE + for (let disabledIntegration of DISABLED_EXTERNAL_INTEGRATIONS) { + delete definitions[disabledIntegration] + } ctx.body = definitions } export async function find(ctx: UserCtx) { const sourceType = ctx.params?.type - if (sourceType === SourceName.AIRTABLE) { + if (DISABLED_EXTERNAL_INTEGRATIONS.indexOf(sourceType) !== -1) { ctx.throw(400, `Invalid source type - ${sourceType} is not supported.`) } ctx.body = await getDefinition(ctx.params.type)