optimize feature flag query in Lab (#9987)

addressing
ee4a321c71 (r1939711930)
This commit is contained in:
nitin
2025-02-04 14:15:14 +05:30
committed by GitHub
parent edeaecad05
commit 0e5c2cff42

View File

@ -50,7 +50,6 @@ export class LabService {
const workspace = await this.workspaceRepository.findOne({ const workspace = await this.workspaceRepository.findOne({
where: { id: workspaceId }, where: { id: workspaceId },
relations: ['featureFlags'],
}); });
workspaceValidator.assertIsDefinedOrThrow( workspaceValidator.assertIsDefinedOrThrow(
@ -58,9 +57,12 @@ export class LabService {
new AuthException('Workspace not found', AuthExceptionCode.INVALID_INPUT), new AuthException('Workspace not found', AuthExceptionCode.INVALID_INPUT),
); );
const existingFlag = workspace.featureFlags?.find( const existingFlag = await this.featureFlagRepository.findOne({
(flag) => flag.key === FeatureFlagKey[payload.publicFeatureFlag], where: {
); workspaceId,
key: FeatureFlagKey[payload.publicFeatureFlag],
},
});
if (existingFlag) { if (existingFlag) {
await this.featureFlagRepository.update(existingFlag.id, { await this.featureFlagRepository.update(existingFlag.id, {
@ -70,16 +72,10 @@ export class LabService {
return { ...existingFlag, value: payload.value }; return { ...existingFlag, value: payload.value };
} }
const newFlag = await this.featureFlagRepository.save({ return this.featureFlagRepository.save({
key: FeatureFlagKey[payload.publicFeatureFlag], key: FeatureFlagKey[payload.publicFeatureFlag],
value: payload.value, value: payload.value,
workspaceId: workspace.id, workspaceId,
}); });
workspace.featureFlags = [...(workspace.featureFlags || []), newFlag];
await this.workspaceRepository.save(workspace);
return newFlag;
} }
} }