UNPKG

@sourceloop/ctrl-plane-subscription-service

Version:

Subscription management microservice for SaaS control plane.

137 lines 5.78 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.PlanFeaturesController = void 0; const tslib_1 = require("tslib"); const loopback4_authorization_1 = require("loopback4-authorization"); const permissions_1 = require("../permissions"); const loopback4_authentication_1 = require("loopback4-authentication"); const rest_1 = require("@loopback/rest"); const core_1 = require("@sourceloop/core"); const models_1 = require("../models"); const feature_toggle_service_1 = require("@sourceloop/feature-toggle-service"); const repository_1 = require("@loopback/repository"); const core_2 = require("@loopback/core"); const plan_features_helper_service_1 = require("../services/plan-features-helper.service"); const basePath = 'plans/{id}/features'; let PlanFeaturesController = class PlanFeaturesController { constructor(featureValuesRepository, planFeaturesService) { this.featureValuesRepository = featureValuesRepository; this.planFeaturesService = planFeaturesService; } async getPlanFeatures(id) { return this.planFeaturesService.planFeatures(id); } async setPlanFeatures(id, featureValues) { const values = featureValues.map(e => { e.strategyEntityId = id; e.strategyKey = 'Plan'; return e; }); return this.featureValuesRepository.createAll(values); } async updatePlanFeatures(id, featureValues) { return this.planFeaturesService.updatePlanFeatures(id, featureValues); } }; exports.PlanFeaturesController = PlanFeaturesController; tslib_1.__decorate([ (0, loopback4_authorization_1.authorize)({ permissions: [permissions_1.PermissionKey.ViewPlanFeatures], }), (0, loopback4_authentication_1.authenticate)("bearer" /* STRATEGY.BEARER */, { passReqToCallback: true, }), (0, rest_1.get)(basePath, { security: core_1.OPERATION_SECURITY_SPEC, responses: { [200 /* STATUS_CODE.OK */]: { description: 'Plan Features Retrieved', content: { 'application/json': { schema: { ...(0, core_1.getModelSchemaRefSF)(models_1.Plan), ...(0, core_1.getModelSchemaRefSF)(feature_toggle_service_1.FeatureValues), }, }, }, }, }, }), tslib_1.__param(0, rest_1.param.path.string('id')), tslib_1.__metadata("design:type", Function), tslib_1.__metadata("design:paramtypes", [String]), tslib_1.__metadata("design:returntype", Promise) ], PlanFeaturesController.prototype, "getPlanFeatures", null); tslib_1.__decorate([ (0, loopback4_authorization_1.authorize)({ permissions: [permissions_1.PermissionKey.AddPlanFeatures], }), (0, loopback4_authentication_1.authenticate)("bearer" /* STRATEGY.BEARER */, { passReqToCallback: true, }), (0, rest_1.post)(basePath, { security: core_1.OPERATION_SECURITY_SPEC, responses: { [200 /* STATUS_CODE.OK */]: { description: 'Plan Features Created', content: { 'application/json': { schema: { ...(0, core_1.getModelSchemaRefSF)(feature_toggle_service_1.FeatureValues), }, }, }, }, }, }), tslib_1.__param(0, rest_1.param.path.string('id')), tslib_1.__param(1, (0, rest_1.requestBody)()), tslib_1.__metadata("design:type", Function), tslib_1.__metadata("design:paramtypes", [String, Array]), tslib_1.__metadata("design:returntype", Promise) ], PlanFeaturesController.prototype, "setPlanFeatures", null); tslib_1.__decorate([ (0, loopback4_authorization_1.authorize)({ permissions: [permissions_1.PermissionKey.UpdatePlanFeatures], }), (0, loopback4_authentication_1.authenticate)("bearer" /* STRATEGY.BEARER */, { passReqToCallback: true, }), (0, rest_1.patch)(basePath, { security: core_1.OPERATION_SECURITY_SPEC, responses: { [200 /* STATUS_CODE.OK */]: { description: 'Plan Features Updated', content: { 'application/json': { schema: { type: 'array', items: (0, core_1.getModelSchemaRefSF)(feature_toggle_service_1.FeatureValues), }, }, }, }, }, }), tslib_1.__param(0, rest_1.param.path.string('id')), tslib_1.__param(1, (0, rest_1.requestBody)({ content: { 'application/json': { schema: { type: 'array', items: (0, core_1.getModelSchemaRefSF)(feature_toggle_service_1.FeatureValues, { partial: true }), }, }, }, })), tslib_1.__metadata("design:type", Function), tslib_1.__metadata("design:paramtypes", [String, Array]), tslib_1.__metadata("design:returntype", Promise) ], PlanFeaturesController.prototype, "updatePlanFeatures", null); exports.PlanFeaturesController = PlanFeaturesController = tslib_1.__decorate([ tslib_1.__param(0, (0, repository_1.repository)(feature_toggle_service_1.FeatureValuesRepository)), tslib_1.__param(1, (0, core_2.inject)('services.PlanFeaturesService')), tslib_1.__metadata("design:paramtypes", [feature_toggle_service_1.FeatureValuesRepository, plan_features_helper_service_1.PlanFeaturesService]) ], PlanFeaturesController); //# sourceMappingURL=plan-features.controller.js.map