UNPKG

@sourceloop/ctrl-plane-subscription-service

Version:

Subscription management microservice for SaaS control plane.

327 lines 13.4 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SubscriptionController = void 0; const tslib_1 = require("tslib"); const repository_1 = require("@loopback/repository"); const rest_1 = require("@loopback/rest"); const models_1 = require("../models"); const repositories_1 = require("../repositories"); const loopback4_authorization_1 = require("loopback4-authorization"); const loopback4_authentication_1 = require("loopback4-authentication"); const permissions_1 = require("../permissions"); const core_1 = require("@sourceloop/core"); const core_2 = require("@loopback/core"); const subscription_service_1 = require("../services/subscription.service"); const basePath = '/subscriptions'; const description = 'Array of Subscription model instances'; let SubscriptionController = class SubscriptionController { constructor(subscriptionRepository, subscriptionService) { this.subscriptionRepository = subscriptionRepository; this.subscriptionService = subscriptionService; } async create(subscription) { return this.subscriptionService.createSubscription(subscription); } async count(where) { return this.subscriptionRepository.count(where); } async find(filter) { return this.subscriptionRepository.find(filter); } async expireSoonSubscription(filter) { return this.subscriptionService.getExpireSoonSubscriptions(); } async expiredSubscription(dayCount, filter) { return this.subscriptionService.handleExpiredSubscriptions(dayCount); } async updateAll(subscription, where) { return this.subscriptionRepository.updateAll(subscription, where); } async findById(id, filter) { return this.subscriptionRepository.findById(id, filter); } async updateById(id, subscription) { await this.subscriptionRepository.updateById(id, subscription); } async replaceById(id, subscription) { await this.subscriptionRepository.replaceById(id, subscription); } async deleteById(id) { await this.subscriptionRepository.deleteById(id); } }; exports.SubscriptionController = SubscriptionController; tslib_1.__decorate([ (0, loopback4_authorization_1.authorize)({ permissions: [permissions_1.PermissionKey.CreateSubscription], }), (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: 'Subscription model instance', content: { 'application/json': { schema: (0, core_1.getModelSchemaRefSF)(models_1.Subscription) }, }, }, }, }), tslib_1.__param(0, (0, rest_1.requestBody)({ content: { 'application/json': { schema: (0, core_1.getModelSchemaRefSF)(models_1.Subscription, { title: 'NewSubscription', exclude: ['id', 'startDate', 'endDate'], }), }, }, })), tslib_1.__metadata("design:type", Function), tslib_1.__metadata("design:paramtypes", [Object]), tslib_1.__metadata("design:returntype", Promise) ], SubscriptionController.prototype, "create", null); tslib_1.__decorate([ (0, loopback4_authorization_1.authorize)({ permissions: [permissions_1.PermissionKey.ViewSubscription], }), (0, loopback4_authentication_1.authenticate)("bearer" /* STRATEGY.BEARER */, { passReqToCallback: true, }), (0, rest_1.get)(`${basePath}/count`, { security: core_1.OPERATION_SECURITY_SPEC, responses: { [200 /* STATUS_CODE.OK */]: { description: 'Subscription model count', content: { 'application/json': { schema: repository_1.CountSchema } }, }, }, }), tslib_1.__param(0, rest_1.param.where(models_1.Subscription)), tslib_1.__metadata("design:type", Function), tslib_1.__metadata("design:paramtypes", [Object]), tslib_1.__metadata("design:returntype", Promise) ], SubscriptionController.prototype, "count", null); tslib_1.__decorate([ (0, loopback4_authorization_1.authorize)({ permissions: [permissions_1.PermissionKey.ViewSubscription], }), (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, content: { 'application/json': { schema: { type: 'array', items: (0, core_1.getModelSchemaRefSF)(models_1.Subscription, { includeRelations: true, }), }, }, }, }, }, }), tslib_1.__param(0, rest_1.param.filter(models_1.Subscription)), tslib_1.__metadata("design:type", Function), tslib_1.__metadata("design:paramtypes", [Object]), tslib_1.__metadata("design:returntype", Promise) ], SubscriptionController.prototype, "find", null); tslib_1.__decorate([ (0, loopback4_authorization_1.authorize)({ permissions: [permissions_1.PermissionKey.ViewSubscription], }), (0, loopback4_authentication_1.authenticate)("bearer" /* STRATEGY.BEARER */, { passReqToCallback: true, }), (0, rest_1.get)(`${basePath}/expire-soon`, { security: core_1.OPERATION_SECURITY_SPEC, responses: { [200 /* STATUS_CODE.OK */]: { description, content: { 'application/json': { schema: { type: 'array', items: (0, core_1.getModelSchemaRefSF)(models_1.Subscription, { includeRelations: true, }), }, }, }, }, }, }), tslib_1.__param(0, rest_1.param.filter(models_1.Subscription)), tslib_1.__metadata("design:type", Function), tslib_1.__metadata("design:paramtypes", [Object]), tslib_1.__metadata("design:returntype", Promise) ], SubscriptionController.prototype, "expireSoonSubscription", null); tslib_1.__decorate([ (0, loopback4_authorization_1.authorize)({ permissions: [permissions_1.PermissionKey.ViewSubscription], }), (0, loopback4_authentication_1.authenticate)("bearer" /* STRATEGY.BEARER */, { passReqToCallback: true, }), (0, rest_1.get)(`${basePath}/expired`, { description: 'api that will return newly expired subscription', security: core_1.OPERATION_SECURITY_SPEC, responses: { [200 /* STATUS_CODE.OK */]: { description, content: { 'application/json': { schema: { type: 'array', items: (0, core_1.getModelSchemaRefSF)(models_1.Subscription, { includeRelations: true, }), }, }, }, }, }, }), tslib_1.__param(0, rest_1.param.header.number('days')), tslib_1.__param(1, rest_1.param.filter(models_1.Subscription)), tslib_1.__metadata("design:type", Function), tslib_1.__metadata("design:paramtypes", [Number, Object]), tslib_1.__metadata("design:returntype", Promise) ], SubscriptionController.prototype, "expiredSubscription", null); tslib_1.__decorate([ (0, loopback4_authorization_1.authorize)({ permissions: [permissions_1.PermissionKey.UpdateSubscription], }), (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: 'Subscription PATCH success count', content: { 'application/json': { schema: repository_1.CountSchema } }, }, }, }), tslib_1.__param(0, (0, rest_1.requestBody)({ content: { 'application/json': { schema: (0, core_1.getModelSchemaRefSF)(models_1.Subscription, { partial: true }), }, }, })), tslib_1.__param(1, rest_1.param.where(models_1.Subscription)), tslib_1.__metadata("design:type", Function), tslib_1.__metadata("design:paramtypes", [models_1.Subscription, Object]), tslib_1.__metadata("design:returntype", Promise) ], SubscriptionController.prototype, "updateAll", null); tslib_1.__decorate([ (0, loopback4_authorization_1.authorize)({ permissions: [permissions_1.PermissionKey.ViewSubscription], }), (0, loopback4_authentication_1.authenticate)("bearer" /* STRATEGY.BEARER */, { passReqToCallback: true, }), (0, rest_1.get)(`${basePath}/{id}`, { security: core_1.OPERATION_SECURITY_SPEC, responses: { [200 /* STATUS_CODE.OK */]: { description: 'Subscription model instance', content: { 'application/json': { schema: (0, core_1.getModelSchemaRefSF)(models_1.Subscription, { includeRelations: true }), }, }, }, }, }), tslib_1.__param(0, rest_1.param.path.string('id')), tslib_1.__param(1, rest_1.param.filter(models_1.Subscription, { exclude: 'where' })), tslib_1.__metadata("design:type", Function), tslib_1.__metadata("design:paramtypes", [String, Object]), tslib_1.__metadata("design:returntype", Promise) ], SubscriptionController.prototype, "findById", null); tslib_1.__decorate([ (0, loopback4_authorization_1.authorize)({ permissions: [permissions_1.PermissionKey.UpdateSubscription], }), (0, loopback4_authentication_1.authenticate)("bearer" /* STRATEGY.BEARER */, { passReqToCallback: true, }), (0, rest_1.patch)(`${basePath}/{id}`, { security: core_1.OPERATION_SECURITY_SPEC, responses: { [204 /* STATUS_CODE.NO_CONTENT */]: { description: 'Subscription PATCH success', }, }, }), tslib_1.__param(0, rest_1.param.path.string('id')), tslib_1.__param(1, (0, rest_1.requestBody)({ content: { 'application/json': { schema: (0, core_1.getModelSchemaRefSF)(models_1.Subscription, { partial: true }), }, }, })), tslib_1.__metadata("design:type", Function), tslib_1.__metadata("design:paramtypes", [String, models_1.Subscription]), tslib_1.__metadata("design:returntype", Promise) ], SubscriptionController.prototype, "updateById", null); tslib_1.__decorate([ (0, loopback4_authorization_1.authorize)({ permissions: [permissions_1.PermissionKey.UpdateSubscription], }), (0, loopback4_authentication_1.authenticate)("bearer" /* STRATEGY.BEARER */, { passReqToCallback: true, }), (0, rest_1.put)(`${basePath}/{id}`, { security: core_1.OPERATION_SECURITY_SPEC, responses: { [204 /* STATUS_CODE.NO_CONTENT */]: { description: 'Subscription PUT success', }, }, }), 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, models_1.Subscription]), tslib_1.__metadata("design:returntype", Promise) ], SubscriptionController.prototype, "replaceById", null); tslib_1.__decorate([ (0, loopback4_authorization_1.authorize)({ permissions: [permissions_1.PermissionKey.DeleteSubscription], }), (0, loopback4_authentication_1.authenticate)("bearer" /* STRATEGY.BEARER */, { passReqToCallback: true, }), (0, rest_1.del)(`${basePath}/{id}`, { security: core_1.OPERATION_SECURITY_SPEC, responses: { [204 /* STATUS_CODE.NO_CONTENT */]: { description: 'Subscription DELETE success', }, }, }), 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) ], SubscriptionController.prototype, "deleteById", null); exports.SubscriptionController = SubscriptionController = tslib_1.__decorate([ tslib_1.__param(0, (0, repository_1.repository)(repositories_1.SubscriptionRepository)), tslib_1.__param(1, (0, core_2.inject)('services.SubscriptionService')), tslib_1.__metadata("design:paramtypes", [repositories_1.SubscriptionRepository, subscription_service_1.SubscriptionService]) ], SubscriptionController); //# sourceMappingURL=subscription.controller.js.map