mirror of
https://github.com/Unleash/unleash.git
synced 2025-07-12 13:48:35 +02:00
feat: remove dependency on archive (#5040)
This commit is contained in:
parent
010332e171
commit
c41f23ae54
@ -226,8 +226,8 @@ export default class DependentFeaturesController extends Controller {
|
|||||||
const { child, projectId } = req.params;
|
const { child, projectId } = req.params;
|
||||||
|
|
||||||
if (this.config.flagResolver.isEnabled('dependentFeatures')) {
|
if (this.config.flagResolver.isEnabled('dependentFeatures')) {
|
||||||
await this.dependentFeaturesService.deleteFeatureDependencies(
|
await this.dependentFeaturesService.deleteFeaturesDependencies(
|
||||||
child,
|
[child],
|
||||||
projectId,
|
projectId,
|
||||||
req.user,
|
req.user,
|
||||||
);
|
);
|
||||||
|
@ -163,32 +163,34 @@ export class DependentFeaturesService {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
async deleteFeatureDependencies(
|
async deleteFeaturesDependencies(
|
||||||
feature: string,
|
features: string[],
|
||||||
projectId: string,
|
projectId: string,
|
||||||
user: User,
|
user: User,
|
||||||
): Promise<void> {
|
): Promise<void> {
|
||||||
await this.stopWhenChangeRequestsEnabled(projectId, user);
|
await this.stopWhenChangeRequestsEnabled(projectId, user);
|
||||||
|
|
||||||
return this.unprotectedDeleteFeatureDependencies(
|
return this.unprotectedDeleteFeaturesDependencies(
|
||||||
feature,
|
features,
|
||||||
projectId,
|
projectId,
|
||||||
extractUsernameFromUser(user),
|
extractUsernameFromUser(user),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
async unprotectedDeleteFeatureDependencies(
|
async unprotectedDeleteFeaturesDependencies(
|
||||||
feature: string,
|
features: string[],
|
||||||
projectId: string,
|
projectId: string,
|
||||||
user: string,
|
user: string,
|
||||||
): Promise<void> {
|
): Promise<void> {
|
||||||
await this.dependentFeaturesStore.deleteAll([feature]);
|
await this.dependentFeaturesStore.deleteAll(features);
|
||||||
await this.eventService.storeEvent({
|
await this.eventService.storeEvents(
|
||||||
|
features.map((feature) => ({
|
||||||
type: 'feature-dependencies-removed',
|
type: 'feature-dependencies-removed',
|
||||||
project: projectId,
|
project: projectId,
|
||||||
featureName: feature,
|
featureName: feature,
|
||||||
createdBy: user,
|
createdBy: user,
|
||||||
});
|
})),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
async getParentOptions(feature: string): Promise<string[]> {
|
async getParentOptions(feature: string): Promise<string[]> {
|
||||||
|
@ -777,10 +777,12 @@ export default class ProjectFeaturesController extends Controller {
|
|||||||
res: Response<void>,
|
res: Response<void>,
|
||||||
): Promise<void> {
|
): Promise<void> {
|
||||||
const { featureName, projectId } = req.params;
|
const { featureName, projectId } = req.params;
|
||||||
await this.featureService.archiveToggle(
|
await this.startTransaction(async (tx) =>
|
||||||
|
this.transactionalFeatureToggleService(tx).archiveToggle(
|
||||||
featureName,
|
featureName,
|
||||||
req.user,
|
req.user,
|
||||||
projectId,
|
projectId,
|
||||||
|
),
|
||||||
);
|
);
|
||||||
res.status(202).send();
|
res.status(202).send();
|
||||||
}
|
}
|
||||||
|
@ -1510,6 +1510,13 @@ class FeatureToggleService {
|
|||||||
await this.validateNoChildren(featureName);
|
await this.validateNoChildren(featureName);
|
||||||
|
|
||||||
await this.featureToggleStore.archive(featureName);
|
await this.featureToggleStore.archive(featureName);
|
||||||
|
if (projectId) {
|
||||||
|
await this.dependentFeaturesService.unprotectedDeleteFeaturesDependencies(
|
||||||
|
[featureName],
|
||||||
|
projectId,
|
||||||
|
createdBy,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
await this.eventService.storeEvent(
|
await this.eventService.storeEvent(
|
||||||
new FeatureArchivedEvent({
|
new FeatureArchivedEvent({
|
||||||
@ -1551,6 +1558,11 @@ class FeatureToggleService {
|
|||||||
featureNames,
|
featureNames,
|
||||||
);
|
);
|
||||||
await this.featureToggleStore.batchArchive(featureNames);
|
await this.featureToggleStore.batchArchive(featureNames);
|
||||||
|
await this.dependentFeaturesService.unprotectedDeleteFeaturesDependencies(
|
||||||
|
featureNames,
|
||||||
|
projectId,
|
||||||
|
createdBy,
|
||||||
|
);
|
||||||
|
|
||||||
await this.eventService.storeEvents(
|
await this.eventService.storeEvents(
|
||||||
features.map(
|
features.map(
|
||||||
|
@ -192,7 +192,14 @@ export default class ProjectArchiveController extends Controller {
|
|||||||
const { features } = req.body;
|
const { features } = req.body;
|
||||||
const { projectId } = req.params;
|
const { projectId } = req.params;
|
||||||
|
|
||||||
await this.featureService.archiveToggles(features, req.user, projectId);
|
await this.startTransaction(async (tx) =>
|
||||||
|
this.transactionalFeatureToggleService(tx).archiveToggles(
|
||||||
|
features,
|
||||||
|
req.user,
|
||||||
|
projectId,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
res.status(202).end();
|
res.status(202).end();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user