1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-09-05 17:53:12 +02:00

feat: Create api for project specific archive

This commit is contained in:
Ivar Conradi Østhus 2021-10-12 21:19:38 +02:00
parent ce60d7f31b
commit 5b5e782ed3
No known key found for this signature in database
GPG Key ID: 31AC596886B0BD09
3 changed files with 70 additions and 2 deletions

View File

@ -39,7 +39,7 @@ export default class ArchiveController extends Controller {
const features = await this.featureService.getMetadataForAllFeatures(
true,
);
res.json({ version: 2, features });
res.json({ version: 2, features, maturity: 'deprecated' });
}
async deleteFeature(

View File

@ -96,7 +96,7 @@ class FeatureController extends Controller {
const query = await this.prepQuery(req.query);
const features = await this.featureService2.getFeatureToggles(query);
res.json({ version, features });
res.json({ version, features, maturity: 'deprecated' });
}
async getToggle(

View File

@ -0,0 +1,68 @@
import { Request, Response } from 'express';
import { IUnleashConfig } from '../../../types/option';
import { IUnleashServices } from '../../../types/services';
import { Logger } from '../../../logger';
import Controller from '../../controller';
import { extractUsername } from '../../../util/extract-user';
import { DELETE_FEATURE, UPDATE_FEATURE } from '../../../types/permissions';
import FeatureToggleServiceV2 from '../../../services/feature-toggle-service-v2';
import { IAuthRequest } from '../../unleash-types';
const PATH = `/:projectId/archived-features`;
export default class ArchiveController extends Controller {
private readonly logger: Logger;
private featureService: FeatureToggleServiceV2;
constructor(
config: IUnleashConfig,
{
featureToggleServiceV2,
}: Pick<IUnleashServices, 'featureToggleServiceV2'>,
) {
super(config);
this.logger = config.getLogger('/admin-api/project/archive.ts');
this.featureService = featureToggleServiceV2;
this.get(`${PATH}`, this.getArchivedFeatures);
this.delete(`${PATH}/:featureName`, this.deleteFeature, DELETE_FEATURE);
this.post(
`${PATH}/:featureName/revive`,
this.reviveFeatureToggle,
UPDATE_FEATURE,
);
}
async getArchivedFeatures(req: Request, res: Response): Promise<void> {
const { projectId } = req.params;
const features = await this.featureService.getFeatureOverview(
projectId,
true,
);
res.json({ version: 1, features });
}
async deleteFeature(
req: IAuthRequest<any, { featureName: string }, any, any>,
res: Response,
): Promise<void> {
const { featureName } = req.params;
const user = extractUsername(req);
// TODO: validate projectId
await this.featureService.deleteFeature(featureName, user);
res.status(200).end();
}
async reviveFeatureToggle(req: IAuthRequest, res: Response): Promise<void> {
const userName = extractUsername(req);
const { featureName } = req.params;
// TODO: validate projectId
await this.featureService.reviveToggle(featureName, userName);
res.status(200).end();
}
}
module.exports = ArchiveController;