From d4b0ef7d4757e9ed5c37d241a31d278b6897e950 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Tue, 27 Aug 2024 15:42:01 +0200 Subject: [PATCH 1/6] Feature flagging backend --- packages/backend-core/src/features/index.ts | 1 + packages/server/src/db/linkedRows/index.ts | 6 ++++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/backend-core/src/features/index.ts b/packages/backend-core/src/features/index.ts index e0bd29b1bc..1ae194ea0b 100644 --- a/packages/backend-core/src/features/index.ts +++ b/packages/backend-core/src/features/index.ts @@ -267,4 +267,5 @@ export class FlagSet, T extends { [key: string]: V }> { // default values set correctly and their types flow through the system. export const flags = new FlagSet({ DEFAULT_VALUES: Flag.boolean(false), + ENRICHED_RELATIONSHIPS: Flag.boolean(false), }) diff --git a/packages/server/src/db/linkedRows/index.ts b/packages/server/src/db/linkedRows/index.ts index 2394d00d0e..fa5808a28c 100644 --- a/packages/server/src/db/linkedRows/index.ts +++ b/packages/server/src/db/linkedRows/index.ts @@ -11,7 +11,7 @@ import { USER_METDATA_PREFIX } from "../utils" import partition from "lodash/partition" import { getGlobalUsersFromMetadata } from "../../utilities/global" import { processFormulas } from "../../utilities/rowProcessor" -import { context } from "@budibase/backend-core" +import { context, features } from "@budibase/backend-core" import { ContextUser, FieldType, @@ -272,7 +272,9 @@ export async function squashLinksToPrimaryDisplay( const obj: any = { _id: link._id } obj.primaryDisplay = getPrimaryDisplayValue(link, linkedTable) - const allowRelationshipSchemas = true // TODO + const allowRelationshipSchemas = await features.flags.isEnabled( + "ENRICHED_RELATIONSHIPS" + ) if (schema.schema && allowRelationshipSchemas) { for (const relField of Object.entries(schema.schema) .filter(([_, field]) => field.visible !== false) From 5f40737e9ceac0adc2865e5fa1e1d13722a5b913 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Tue, 27 Aug 2024 16:15:25 +0200 Subject: [PATCH 2/6] Use enums --- packages/backend-core/src/features/index.ts | 4 ++-- packages/server/src/db/linkedRows/index.ts | 3 ++- packages/types/src/sdk/featureFlag.ts | 1 + 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/backend-core/src/features/index.ts b/packages/backend-core/src/features/index.ts index 1ae194ea0b..5fa73ebabe 100644 --- a/packages/backend-core/src/features/index.ts +++ b/packages/backend-core/src/features/index.ts @@ -1,7 +1,7 @@ import env from "../environment" import * as context from "../context" import { PostHog, PostHogOptions } from "posthog-node" -import { IdentityType, UserCtx } from "@budibase/types" +import { FeatureFlag, IdentityType, UserCtx } from "@budibase/types" import tracer from "dd-trace" let posthog: PostHog | undefined @@ -267,5 +267,5 @@ export class FlagSet, T extends { [key: string]: V }> { // default values set correctly and their types flow through the system. export const flags = new FlagSet({ DEFAULT_VALUES: Flag.boolean(false), - ENRICHED_RELATIONSHIPS: Flag.boolean(false), + [FeatureFlag.ENRICHED_RELATIONSHIPS]: Flag.boolean(false), }) diff --git a/packages/server/src/db/linkedRows/index.ts b/packages/server/src/db/linkedRows/index.ts index fa5808a28c..3881060d68 100644 --- a/packages/server/src/db/linkedRows/index.ts +++ b/packages/server/src/db/linkedRows/index.ts @@ -14,6 +14,7 @@ import { processFormulas } from "../../utilities/rowProcessor" import { context, features } from "@budibase/backend-core" import { ContextUser, + FeatureFlag, FieldType, LinkDocumentValue, Row, @@ -273,7 +274,7 @@ export async function squashLinksToPrimaryDisplay( obj.primaryDisplay = getPrimaryDisplayValue(link, linkedTable) const allowRelationshipSchemas = await features.flags.isEnabled( - "ENRICHED_RELATIONSHIPS" + FeatureFlag.ENRICHED_RELATIONSHIPS ) if (schema.schema && allowRelationshipSchemas) { for (const relField of Object.entries(schema.schema) diff --git a/packages/types/src/sdk/featureFlag.ts b/packages/types/src/sdk/featureFlag.ts index 257b4ee576..3d96b63c64 100644 --- a/packages/types/src/sdk/featureFlag.ts +++ b/packages/types/src/sdk/featureFlag.ts @@ -1,6 +1,7 @@ export enum FeatureFlag { PER_CREATOR_PER_USER_PRICE = "PER_CREATOR_PER_USER_PRICE", PER_CREATOR_PER_USER_PRICE_ALERT = "PER_CREATOR_PER_USER_PRICE_ALERT", + ENRICHED_RELATIONSHIPS = "ENRICHED_RELATIONSHIPS", } export interface TenantFeatureFlags { From 8a2bc639ea6549b571d73c6f9565fe1a4ecdeed3 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Tue, 27 Aug 2024 16:21:32 +0200 Subject: [PATCH 3/6] Flag checks on frontend --- .../components/backend/DataTable/TableDataTable.svelte | 5 ++++- .../backend/DataTable/ViewV2DataTable.svelte | 3 +++ .../grid/controls/ColumnsSettingContent.svelte | 10 +++++----- .../src/components/grid/layout/Grid.svelte | 2 ++ 4 files changed, 14 insertions(+), 6 deletions(-) diff --git a/packages/builder/src/components/backend/DataTable/TableDataTable.svelte b/packages/builder/src/components/backend/DataTable/TableDataTable.svelte index 525421f996..ba3b37f812 100644 --- a/packages/builder/src/components/backend/DataTable/TableDataTable.svelte +++ b/packages/builder/src/components/backend/DataTable/TableDataTable.svelte @@ -1,6 +1,6 @@