mirror of
https://github.com/Unleash/unleash.git
synced 2025-01-25 00:07:47 +01:00
chore: remove unused and deprecated methods in feature toggle legacy controller and in feature toggle service (#7199)
This commit is contained in:
parent
ef9f09b58c
commit
998abaad67
@ -14,10 +14,8 @@ import {
|
|||||||
FeatureStrategyUpdateEvent,
|
FeatureStrategyUpdateEvent,
|
||||||
type FeatureToggle,
|
type FeatureToggle,
|
||||||
type FeatureToggleDTO,
|
type FeatureToggleDTO,
|
||||||
type FeatureToggleLegacy,
|
|
||||||
type FeatureToggleView,
|
type FeatureToggleView,
|
||||||
type FeatureToggleWithEnvironment,
|
type FeatureToggleWithEnvironment,
|
||||||
FeatureUpdatedEvent,
|
|
||||||
FeatureVariantEvent,
|
FeatureVariantEvent,
|
||||||
type IAuditUser,
|
type IAuditUser,
|
||||||
type IConstraint,
|
type IConstraint,
|
||||||
@ -1815,67 +1813,6 @@ class FeatureToggleService {
|
|||||||
return feature;
|
return feature;
|
||||||
}
|
}
|
||||||
|
|
||||||
// @deprecated
|
|
||||||
async storeFeatureUpdatedEventLegacy(
|
|
||||||
featureName: string,
|
|
||||||
auditUser: IAuditUser,
|
|
||||||
): Promise<FeatureToggleLegacy> {
|
|
||||||
const feature = await this.getFeatureToggleLegacy(featureName);
|
|
||||||
|
|
||||||
// Legacy event. Will not be used from v4.3.
|
|
||||||
// We do not include 'preData' on purpose.
|
|
||||||
await this.eventService.storeEvent(
|
|
||||||
new FeatureUpdatedEvent({
|
|
||||||
featureName,
|
|
||||||
data: feature,
|
|
||||||
project: feature.project,
|
|
||||||
auditUser,
|
|
||||||
}),
|
|
||||||
);
|
|
||||||
return feature;
|
|
||||||
}
|
|
||||||
|
|
||||||
// @deprecated
|
|
||||||
async toggle(
|
|
||||||
projectId: string,
|
|
||||||
featureName: string,
|
|
||||||
environment: string,
|
|
||||||
auditUser: IAuditUser,
|
|
||||||
): Promise<FeatureToggle> {
|
|
||||||
await this.featureToggleStore.get(featureName);
|
|
||||||
const isEnabled =
|
|
||||||
await this.featureEnvironmentStore.isEnvironmentEnabled(
|
|
||||||
featureName,
|
|
||||||
environment,
|
|
||||||
);
|
|
||||||
return this.updateEnabled(
|
|
||||||
projectId,
|
|
||||||
featureName,
|
|
||||||
environment,
|
|
||||||
!isEnabled,
|
|
||||||
auditUser,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
// @deprecated
|
|
||||||
async getFeatureToggleLegacy(
|
|
||||||
featureName: string,
|
|
||||||
): Promise<FeatureToggleLegacy> {
|
|
||||||
const feature =
|
|
||||||
await this.featureStrategiesStore.getFeatureToggleWithEnvs(
|
|
||||||
featureName,
|
|
||||||
);
|
|
||||||
const { environments, ...legacyFeature } = feature;
|
|
||||||
const defaultEnv = environments.find((e) => e.name === DEFAULT_ENV);
|
|
||||||
const strategies = defaultEnv?.strategies || [];
|
|
||||||
const enabled = defaultEnv?.enabled || false;
|
|
||||||
return {
|
|
||||||
...legacyFeature,
|
|
||||||
enabled,
|
|
||||||
strategies,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
async changeProject(
|
async changeProject(
|
||||||
featureName: string,
|
featureName: string,
|
||||||
newProject: string,
|
newProject: string,
|
||||||
|
@ -5,11 +5,10 @@ import { NONE, UPDATE_FEATURE } from '../../../types/permissions';
|
|||||||
import type { IUnleashConfig } from '../../../types/option';
|
import type { IUnleashConfig } from '../../../types/option';
|
||||||
import type { IUnleashServices } from '../../../types';
|
import type { IUnleashServices } from '../../../types';
|
||||||
import type FeatureToggleService from '../feature-toggle-service';
|
import type FeatureToggleService from '../feature-toggle-service';
|
||||||
import { featureSchema, querySchema } from '../../../schema/feature-schema';
|
import { querySchema } from '../../../schema/feature-schema';
|
||||||
import type { IFeatureToggleQuery } from '../../../types/model';
|
import type { IFeatureToggleQuery } from '../../../types/model';
|
||||||
import type FeatureTagService from '../../../services/feature-tag-service';
|
import type FeatureTagService from '../../../services/feature-tag-service';
|
||||||
import type { IAuthRequest } from '../../../routes/unleash-types';
|
import type { IAuthRequest } from '../../../routes/unleash-types';
|
||||||
import { DEFAULT_ENV } from '../../../util/constants';
|
|
||||||
import type { TagSchema } from '../../../openapi/spec/tag-schema';
|
import type { TagSchema } from '../../../openapi/spec/tag-schema';
|
||||||
import type { TagsSchema } from '../../../openapi/spec/tags-schema';
|
import type { TagsSchema } from '../../../openapi/spec/tags-schema';
|
||||||
import type { OpenApiService } from '../../../services/openapi-service';
|
import type { OpenApiService } from '../../../services/openapi-service';
|
||||||
@ -184,15 +183,6 @@ class FeatureController extends Controller {
|
|||||||
return query;
|
return query;
|
||||||
}
|
}
|
||||||
|
|
||||||
async getToggle(
|
|
||||||
req: Request<{ featureName: string }, any, any, any>,
|
|
||||||
res: Response,
|
|
||||||
): Promise<void> {
|
|
||||||
const name = req.params.featureName;
|
|
||||||
const feature = await this.service.getFeatureToggleLegacy(name);
|
|
||||||
res.json(feature).end();
|
|
||||||
}
|
|
||||||
|
|
||||||
async listTags(
|
async listTags(
|
||||||
req: Request<{ featureName: string }, any, any, any>,
|
req: Request<{ featureName: string }, any, any, any>,
|
||||||
res: Response<TagsSchema>,
|
res: Response<TagsSchema>,
|
||||||
@ -274,182 +264,5 @@ class FeatureController extends Controller {
|
|||||||
);
|
);
|
||||||
res.status(200).end();
|
res.status(200).end();
|
||||||
}
|
}
|
||||||
|
|
||||||
async createToggle(req: IAuthRequest, res: Response): Promise<void> {
|
|
||||||
const toggle = req.body;
|
|
||||||
|
|
||||||
const validatedToggle = await featureSchema.validateAsync(toggle);
|
|
||||||
const { enabled, project, name, variants = [] } = validatedToggle;
|
|
||||||
const createdFeature = await this.service.createFeatureToggle(
|
|
||||||
project,
|
|
||||||
validatedToggle,
|
|
||||||
req.audit,
|
|
||||||
true,
|
|
||||||
);
|
|
||||||
const strategies = await Promise.all(
|
|
||||||
(toggle.strategies ?? []).map(async (s) =>
|
|
||||||
this.service.createStrategy(
|
|
||||||
s,
|
|
||||||
{
|
|
||||||
projectId: project,
|
|
||||||
featureName: name,
|
|
||||||
environment: DEFAULT_ENV,
|
|
||||||
},
|
|
||||||
req.audit,
|
|
||||||
req.user,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
await this.service.updateEnabled(
|
|
||||||
project,
|
|
||||||
name,
|
|
||||||
DEFAULT_ENV,
|
|
||||||
enabled,
|
|
||||||
req.audit,
|
|
||||||
);
|
|
||||||
await this.service.saveVariants(name, project, variants, req.audit);
|
|
||||||
|
|
||||||
res.status(201).json({
|
|
||||||
...createdFeature,
|
|
||||||
variants,
|
|
||||||
enabled,
|
|
||||||
strategies,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
async updateToggle(req: IAuthRequest, res: Response): Promise<void> {
|
|
||||||
const { featureName } = req.params;
|
|
||||||
const updatedFeature = req.body;
|
|
||||||
|
|
||||||
updatedFeature.name = featureName;
|
|
||||||
|
|
||||||
const projectId = await this.service.getProjectId(featureName);
|
|
||||||
const value = await featureSchema.validateAsync(updatedFeature);
|
|
||||||
|
|
||||||
await this.service.updateFeatureToggle(
|
|
||||||
projectId,
|
|
||||||
value,
|
|
||||||
featureName,
|
|
||||||
req.audit,
|
|
||||||
);
|
|
||||||
|
|
||||||
await this.service.removeAllStrategiesForEnv(featureName);
|
|
||||||
|
|
||||||
if (updatedFeature.strategies) {
|
|
||||||
await Promise.all(
|
|
||||||
updatedFeature.strategies.map(async (s) =>
|
|
||||||
this.service.createStrategy(
|
|
||||||
s,
|
|
||||||
{
|
|
||||||
projectId: projectId!!,
|
|
||||||
featureName,
|
|
||||||
environment: DEFAULT_ENV,
|
|
||||||
},
|
|
||||||
req.audit,
|
|
||||||
req.user,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
await this.service.updateEnabled(
|
|
||||||
projectId!!,
|
|
||||||
featureName,
|
|
||||||
DEFAULT_ENV,
|
|
||||||
updatedFeature.enabled,
|
|
||||||
req.audit,
|
|
||||||
req.user,
|
|
||||||
);
|
|
||||||
await this.service.saveVariants(
|
|
||||||
featureName,
|
|
||||||
projectId!!,
|
|
||||||
value.variants || [],
|
|
||||||
req.audit,
|
|
||||||
);
|
|
||||||
|
|
||||||
const feature = await this.service.storeFeatureUpdatedEventLegacy(
|
|
||||||
featureName,
|
|
||||||
req.audit,
|
|
||||||
);
|
|
||||||
|
|
||||||
res.status(200).json(feature);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @deprecated TODO: remove?
|
|
||||||
*
|
|
||||||
* Kept to keep backward compatibility
|
|
||||||
*/
|
|
||||||
async toggle(req: IAuthRequest, res: Response): Promise<void> {
|
|
||||||
const { featureName } = req.params;
|
|
||||||
const projectId = await this.service.getProjectId(featureName);
|
|
||||||
const feature = await this.service.toggle(
|
|
||||||
projectId,
|
|
||||||
featureName,
|
|
||||||
DEFAULT_ENV,
|
|
||||||
req.audit,
|
|
||||||
);
|
|
||||||
await this.service.storeFeatureUpdatedEventLegacy(
|
|
||||||
featureName,
|
|
||||||
req.audit,
|
|
||||||
);
|
|
||||||
res.status(200).json(feature);
|
|
||||||
}
|
|
||||||
|
|
||||||
async toggleOn(req: IAuthRequest, res: Response): Promise<void> {
|
|
||||||
const { featureName } = req.params;
|
|
||||||
const projectId = await this.service.getProjectId(featureName);
|
|
||||||
const feature = await this.service.updateEnabled(
|
|
||||||
projectId,
|
|
||||||
featureName,
|
|
||||||
DEFAULT_ENV,
|
|
||||||
true,
|
|
||||||
req.audit,
|
|
||||||
req.user,
|
|
||||||
);
|
|
||||||
await this.service.storeFeatureUpdatedEventLegacy(
|
|
||||||
featureName,
|
|
||||||
req.audit,
|
|
||||||
);
|
|
||||||
res.json(feature);
|
|
||||||
}
|
|
||||||
|
|
||||||
async toggleOff(req: IAuthRequest, res: Response): Promise<void> {
|
|
||||||
const { featureName } = req.params;
|
|
||||||
const projectId = await this.service.getProjectId(featureName);
|
|
||||||
const feature = await this.service.updateEnabled(
|
|
||||||
projectId,
|
|
||||||
featureName,
|
|
||||||
DEFAULT_ENV,
|
|
||||||
false,
|
|
||||||
req.audit,
|
|
||||||
req.user,
|
|
||||||
);
|
|
||||||
await this.service.storeFeatureUpdatedEventLegacy(
|
|
||||||
featureName,
|
|
||||||
req.audit,
|
|
||||||
);
|
|
||||||
res.json(feature);
|
|
||||||
}
|
|
||||||
|
|
||||||
async staleOn(req: IAuthRequest, res: Response): Promise<void> {
|
|
||||||
const { featureName } = req.params;
|
|
||||||
await this.service.updateStale(featureName, true, req.audit);
|
|
||||||
const feature = await this.service.getFeatureToggleLegacy(featureName);
|
|
||||||
res.json(feature);
|
|
||||||
}
|
|
||||||
|
|
||||||
async staleOff(req: IAuthRequest, res: Response): Promise<void> {
|
|
||||||
const { featureName } = req.params;
|
|
||||||
await this.service.updateStale(featureName, false, req.audit);
|
|
||||||
const feature = await this.service.getFeatureToggleLegacy(featureName);
|
|
||||||
res.json(feature);
|
|
||||||
}
|
|
||||||
|
|
||||||
async archiveToggle(req: IAuthRequest, res: Response): Promise<void> {
|
|
||||||
const { featureName } = req.params;
|
|
||||||
|
|
||||||
await this.service.archiveToggle(featureName, req.user, req.audit);
|
|
||||||
res.status(200).end();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
export default FeatureController;
|
export default FeatureController;
|
||||||
|
Loading…
Reference in New Issue
Block a user