UNPKG

unleash-server

Version:

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

87 lines 3.84 kB
import Controller from '../../routes/controller.js'; import { UPDATE_FEATURE } from '../../types/permissions.js'; import { emptyResponse, getStandardResponses, } from '../../openapi/util/standard-responses.js'; import { createRequestSchema } from '../../openapi/util/create-request-schema.js'; const PATH = '/:projectId/features/:featureName/link'; const PATH_LINK = '/:projectId/features/:featureName/link/:linkId'; export default class FeatureLinkController extends Controller { constructor(config, { transactionalFeatureLinkService, openApiService, }) { super(config); this.transactionalFeatureLinkService = transactionalFeatureLinkService; this.openApiService = openApiService; this.flagResolver = config.flagResolver; this.route({ method: 'post', path: PATH, handler: this.createFeatureLink, permission: UPDATE_FEATURE, middleware: [ openApiService.validPath({ tags: ['Unstable'], operationId: 'createFeatureLink', summary: 'Create a feature link', description: 'Create a new link for a feature.', responses: { 204: emptyResponse, ...getStandardResponses(400, 401, 403, 415), }, requestBody: createRequestSchema('featureLinkSchema'), }), ], }); this.route({ method: 'put', path: PATH_LINK, handler: this.updateFeatureLink, permission: UPDATE_FEATURE, middleware: [ openApiService.validPath({ tags: ['Unstable'], operationId: 'updateFeatureLink', summary: 'Update a feature link', description: 'Update an existing feature link.', responses: { 204: emptyResponse, ...getStandardResponses(400, 401, 403, 404, 415), }, requestBody: createRequestSchema('featureLinkSchema'), }), ], }); this.route({ method: 'delete', path: PATH_LINK, handler: this.deleteFeatureLink, acceptAnyContentType: true, permission: UPDATE_FEATURE, middleware: [ openApiService.validPath({ tags: ['Unstable'], operationId: 'deleteFeatureLink', summary: 'Delete a feature link', description: 'Delete a feature link by id.', responses: { 204: emptyResponse, ...getStandardResponses(401, 403, 404), }, }), ], }); } async createFeatureLink(req, res) { const { projectId, featureName } = req.params; await this.transactionalFeatureLinkService.transactional((service) => service.createLink(projectId, { ...req.body, featureName }, req.audit)); res.status(204).end(); } async updateFeatureLink(req, res) { const { projectId, linkId, featureName } = req.params; await this.transactionalFeatureLinkService.transactional((service) => service.updateLink({ projectId, linkId }, { ...req.body, featureName }, req.audit)); res.status(204).end(); } async deleteFeatureLink(req, res) { const { projectId, linkId } = req.params; await this.transactionalFeatureLinkService.transactional((service) => service.deleteLink({ projectId, linkId }, req.audit)); res.status(204).end(); } } //# sourceMappingURL=feature-link-controller.js.map