From 0e5c2cff422872a7293c9fb617afe262330291c8 Mon Sep 17 00:00:00 2001 From: nitin <142569587+ehconitin@users.noreply.github.com> Date: Tue, 4 Feb 2025 14:15:14 +0530 Subject: [PATCH] optimize feature flag query in Lab (#9987) addressing https://github.com/twentyhq/twenty/pull/9981/files/ee4a321c71704216f2dee990db2f94d849e9d686#r1939711930 --- .../core-modules/lab/services/lab.service.ts | 20 ++++++++----------- 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/packages/twenty-server/src/engine/core-modules/lab/services/lab.service.ts b/packages/twenty-server/src/engine/core-modules/lab/services/lab.service.ts index c66c46790..66e57957c 100644 --- a/packages/twenty-server/src/engine/core-modules/lab/services/lab.service.ts +++ b/packages/twenty-server/src/engine/core-modules/lab/services/lab.service.ts @@ -50,7 +50,6 @@ export class LabService { const workspace = await this.workspaceRepository.findOne({ where: { id: workspaceId }, - relations: ['featureFlags'], }); workspaceValidator.assertIsDefinedOrThrow( @@ -58,9 +57,12 @@ export class LabService { new AuthException('Workspace not found', AuthExceptionCode.INVALID_INPUT), ); - const existingFlag = workspace.featureFlags?.find( - (flag) => flag.key === FeatureFlagKey[payload.publicFeatureFlag], - ); + const existingFlag = await this.featureFlagRepository.findOne({ + where: { + workspaceId, + key: FeatureFlagKey[payload.publicFeatureFlag], + }, + }); if (existingFlag) { await this.featureFlagRepository.update(existingFlag.id, { @@ -70,16 +72,10 @@ export class LabService { return { ...existingFlag, value: payload.value }; } - const newFlag = await this.featureFlagRepository.save({ + return this.featureFlagRepository.save({ key: FeatureFlagKey[payload.publicFeatureFlag], value: payload.value, - workspaceId: workspace.id, + workspaceId, }); - - workspace.featureFlags = [...(workspace.featureFlags || []), newFlag]; - - await this.workspaceRepository.save(workspace); - - return newFlag; } }