@sourceloop/ctrl-plane-subscription-service
Version:
Subscription management microservice for SaaS control plane.
50 lines (45 loc) • 1.46 kB
text/typescript
// Copyright (c) 2023 Sourcefuse Technologies
//
// This software is released under the MIT License.
// https://opensource.org/licenses/MIT
import {repository} from '@loopback/repository';
import {SubscriptionRepository} from '../repositories';
import {get, param} from '@loopback/openapi-v3';
import {
OPERATION_SECURITY_SPEC,
STATUS_CODE,
getModelSchemaRefSF,
} from '@sourceloop/core';
import {authenticate, STRATEGY} from 'loopback4-authentication';
import {authorize} from 'loopback4-authorization';
import {PermissionKey} from '../permissions';
import {Subscription} from '../models';
const baseUrl = '/plans/{id}/subscriptions';
export class PlanSubscriptionController {
constructor(
(SubscriptionRepository)
private readonly subscriptionRepository: SubscriptionRepository,
) {}
(STRATEGY.BEARER, {
passReqToCallback: true,
})
({
permissions: [PermissionKey.ViewPlan, PermissionKey.ViewSubscription],
})
(baseUrl, {
security: OPERATION_SECURITY_SPEC,
responses: {
[STATUS_CODE.OK]: {
description: 'Plan model instance',
content: {
'application/json': {
schema: getModelSchemaRefSF(Subscription, {includeRelations: true}),
},
},
},
},
})
async find(.path.string('id') id: string): Promise<Subscription[]> {
return this.subscriptionRepository.find({where: {planId: id}});
}
}