1
0
mirror of https://github.com/Unleash/unleash.git synced 2024-12-22 19:07:54 +01:00

fix: legacy feature stale on/off needs to return full toggle

This commit is contained in:
Ivar Conradi Østhus 2021-10-28 15:48:07 +02:00
parent 8ad235e77f
commit 3ef7fd2420
No known key found for this signature in database
GPG Key ID: 31AC596886B0BD09

View File

@ -22,11 +22,9 @@ import { DEFAULT_ENV } from '../../util/constants';
const version = 1;
class FeatureController extends Controller {
private logger: Logger;
private tagService: FeatureTagService;
private featureTagService: FeatureTagService;
private featureService2: FeatureToggleServiceV2;
private service: FeatureToggleServiceV2;
constructor(
config: IUnleashConfig,
@ -39,9 +37,8 @@ class FeatureController extends Controller {
>,
) {
super(config);
this.featureTagService = featureTagService;
this.featureService2 = featureToggleServiceV2;
this.logger = config.getLogger('/admin-api/feature.ts');
this.tagService = featureTagService;
this.service = featureToggleServiceV2;
this.get('/', this.getAllToggles);
this.post('/', this.createToggle, CREATE_FEATURE);
@ -94,7 +91,7 @@ class FeatureController extends Controller {
async getAllToggles(req: Request, res: Response): Promise<void> {
const query = await this.prepQuery(req.query);
const features = await this.featureService2.getFeatureToggles(query);
const features = await this.service.getFeatureToggles(query);
res.json({ version, features });
}
@ -104,21 +101,19 @@ class FeatureController extends Controller {
res: Response,
): Promise<void> {
const name = req.params.featureName;
const feature = await this.featureService2.getFeatureToggleLegacy(name);
const feature = await this.service.getFeatureToggleLegacy(name);
res.json(feature).end();
}
async listTags(req: Request, res: Response): Promise<void> {
const tags = await this.featureTagService.listTags(
req.params.featureName,
);
const tags = await this.tagService.listTags(req.params.featureName);
res.json({ version, tags });
}
async addTag(req: IAuthRequest, res: Response): Promise<void> {
const { featureName } = req.params;
const userName = extractUsername(req);
const tag = await this.featureTagService.addTag(
const tag = await this.tagService.addTag(
featureName,
req.body,
userName,
@ -130,18 +125,14 @@ class FeatureController extends Controller {
async removeTag(req: IAuthRequest, res: Response): Promise<void> {
const { featureName, type, value } = req.params;
const userName = extractUsername(req);
await this.featureTagService.removeTag(
featureName,
{ type, value },
userName,
);
await this.tagService.removeTag(featureName, { type, value }, userName);
res.status(200).end();
}
async validate(req: Request, res: Response): Promise<void> {
const { name } = req.body;
await this.featureService2.validateName(name);
await this.service.validateName(name);
res.status(200).end();
}
@ -151,14 +142,14 @@ class FeatureController extends Controller {
const validatedToggle = await featureSchema.validateAsync(toggle);
const { enabled } = validatedToggle;
const createdFeature = await this.featureService2.createFeatureToggle(
const createdFeature = await this.service.createFeatureToggle(
validatedToggle.project,
validatedToggle,
userName,
);
const strategies = await Promise.all(
toggle.strategies.map(async (s) =>
this.featureService2.createStrategy(
this.service.createStrategy(
s,
createdFeature.project,
createdFeature.name,
@ -166,7 +157,7 @@ class FeatureController extends Controller {
),
),
);
await this.featureService2.updateEnabled(
await this.service.updateEnabled(
createdFeature.project,
createdFeature.name,
DEFAULT_ENV,
@ -188,23 +179,17 @@ class FeatureController extends Controller {
updatedFeature.name = featureName;
const projectId = await this.featureService2.getProjectId(
updatedFeature.name,
);
const projectId = await this.service.getProjectId(updatedFeature.name);
const value = await featureSchema.validateAsync(updatedFeature);
await this.featureService2.updateFeatureToggle(
projectId,
value,
userName,
);
await this.service.updateFeatureToggle(projectId, value, userName);
await this.featureService2.removeAllStrategiesForEnv(featureName);
await this.service.removeAllStrategiesForEnv(featureName);
if (updatedFeature.strategies) {
await Promise.all(
updatedFeature.strategies.map(async (s) =>
this.featureService2.createStrategy(
this.service.createStrategy(
s,
projectId,
featureName,
@ -213,7 +198,7 @@ class FeatureController extends Controller {
),
);
}
await this.featureService2.updateEnabled(
await this.service.updateEnabled(
projectId,
updatedFeature.name,
DEFAULT_ENV,
@ -221,11 +206,10 @@ class FeatureController extends Controller {
userName,
);
const feature =
await this.featureService2.storeFeatureUpdatedEventLegacy(
featureName,
userName,
);
const feature = await this.service.storeFeatureUpdatedEventLegacy(
featureName,
userName,
);
res.status(200).json(feature);
}
@ -235,14 +219,14 @@ class FeatureController extends Controller {
async toggle(req: IAuthRequest, res: Response): Promise<void> {
const userName = extractUsername(req);
const { featureName } = req.params;
const projectId = await this.featureService2.getProjectId(featureName);
const feature = await this.featureService2.toggle(
const projectId = await this.service.getProjectId(featureName);
const feature = await this.service.toggle(
projectId,
featureName,
DEFAULT_ENV,
userName,
);
await this.featureService2.storeFeatureUpdatedEventLegacy(
await this.service.storeFeatureUpdatedEventLegacy(
featureName,
userName,
);
@ -252,15 +236,15 @@ class FeatureController extends Controller {
async toggleOn(req: IAuthRequest, res: Response): Promise<void> {
const { featureName } = req.params;
const userName = extractUsername(req);
const projectId = await this.featureService2.getProjectId(featureName);
const feature = await this.featureService2.updateEnabled(
const projectId = await this.service.getProjectId(featureName);
const feature = await this.service.updateEnabled(
projectId,
featureName,
DEFAULT_ENV,
true,
userName,
);
await this.featureService2.storeFeatureUpdatedEventLegacy(
await this.service.storeFeatureUpdatedEventLegacy(
featureName,
userName,
);
@ -270,15 +254,15 @@ class FeatureController extends Controller {
async toggleOff(req: IAuthRequest, res: Response): Promise<void> {
const { featureName } = req.params;
const userName = extractUsername(req);
const projectId = await this.featureService2.getProjectId(featureName);
const feature = await this.featureService2.updateEnabled(
const projectId = await this.service.getProjectId(featureName);
const feature = await this.service.updateEnabled(
projectId,
featureName,
DEFAULT_ENV,
false,
userName,
);
await this.featureService2.storeFeatureUpdatedEventLegacy(
await this.service.storeFeatureUpdatedEventLegacy(
featureName,
userName,
);
@ -288,22 +272,24 @@ class FeatureController extends Controller {
async staleOn(req: IAuthRequest, res: Response): Promise<void> {
const { featureName } = req.params;
const userName = extractUsername(req);
await this.featureService2.updateStale(featureName, true, userName);
res.status(200).end();
await this.service.updateStale(featureName, true, userName);
const feature = await this.service.getFeatureToggleLegacy(featureName);
res.json(feature);
}
async staleOff(req: IAuthRequest, res: Response): Promise<void> {
const { featureName } = req.params;
const userName = extractUsername(req);
await this.featureService2.updateStale(featureName, false, userName);
res.status(200).end();
await this.service.updateStale(featureName, false, userName);
const feature = await this.service.getFeatureToggleLegacy(featureName);
res.json(feature);
}
async archiveToggle(req: IAuthRequest, res: Response): Promise<void> {
const { featureName } = req.params;
const userName = extractUsername(req);
await this.featureService2.archiveToggle(featureName, userName);
await this.service.archiveToggle(featureName, userName);
res.status(200).end();
}
}