optimize feature flag query in Lab (#9987)
addressing
ee4a321c71 (r1939711930)
This commit is contained in:
@ -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;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user