UNPKG

unleash-server

Version:

Unleash is an enterprise ready feature flag service. It provides different strategies for handling feature flags.

63 lines 2.65 kB
import Controller from '../../routes/controller.js'; import { extractUsername } from '../../util/extract-user.js'; import { DELETE_FEATURE, UPDATE_FEATURE } from '../../types/permissions.js'; import { emptyResponse, getStandardResponses, } from '../../openapi/util/standard-responses.js'; export default class ArchiveController extends Controller { constructor(config, { transactionalFeatureToggleService, featureToggleService, openApiService, }) { super(config); this.featureService = featureToggleService; this.openApiService = openApiService; this.transactionalFeatureToggleService = transactionalFeatureToggleService; this.route({ method: 'delete', path: '/:featureName', acceptAnyContentType: true, handler: this.deleteFeature, permission: DELETE_FEATURE, middleware: [ openApiService.validPath({ tags: ['Archive'], description: 'This endpoint archives the specified feature.', summary: 'Archives a feature', operationId: 'deleteFeature', responses: { 200: emptyResponse, ...getStandardResponses(401, 403), }, }), ], }); this.route({ method: 'post', path: '/revive/:featureName', acceptAnyContentType: true, handler: this.reviveFeature, permission: UPDATE_FEATURE, middleware: [ openApiService.validPath({ tags: ['Archive'], description: 'This endpoint revives the specified feature from archive.', summary: 'Revives a feature', operationId: 'reviveFeature', responses: { 200: emptyResponse, ...getStandardResponses(400, 401, 403), }, }), ], }); } async deleteFeature(req, res) { const { featureName } = req.params; const user = extractUsername(req); await this.featureService.deleteFeature(featureName, req.audit); res.status(200).end(); } async reviveFeature(req, res) { const { featureName } = req.params; await this.transactionalFeatureToggleService.transactional((service) => service.reviveFeature(featureName, req.audit)); res.status(200).end(); } } //# sourceMappingURL=archive-feature-toggle-controller.js.map