@sourceloop/ctrl-plane-subscription-service
v0.3.0
Published
Subscription management microservice for SaaS control plane
Downloads
85
Readme
subscription-service
This is the primary service of the control plane responsible for subscription and plan management.
Overview
A Microservice for handling subscription management operations. It provides -
- plan creations and management - plan includes plan tier - silo/pooled
- Add or Update Plan Items/Services/Resources to Plans - plan items are the offerings to user with in the selected plan
- Billing Cycle handling - Billing cycle includes start date and end date etc
Installation
Install Subscription service using npm
;
$ [npm install | yarn add] @sourceloop/subscription-service
Usage
- Create a new Loopback4 Application (If you don't have one already)
lb4 testapp
- Install the subscription service
npm i @sourceloop/subscription-service
- Set the environment variables.
- Run the migrations.
- Add the
SubscriptionServiceComponent
to your Loopback4 Application (inapplication.ts
).// import the SubscriptionServiceComponent import {SubscriptionServiceComponent} from '@sourceloop/subscription-service'; // add Component for subscription-service this.component(SubscriptionServiceComponent);
- Set up a Loopback4 Datasource with
dataSourceName
property set toSubscriptionDB
. You can see an example datasource here. - Bind any of the custom providers you need.
Environment Variables
Setting up a DataSource
Here is a sample Implementation DataSource
implementation using environment variables and PostgreSQL as the data source.
import {inject, lifeCycleObserver, LifeCycleObserver} from '@loopback/core';
import {juggler} from '@loopback/repository';
import {TenantManagementDbSourceName} from "@sourceloop/tenant-management-service";
const config = {
name: SubscriptionDbSourceName,
connector: 'postgresql',
url: '',
host: process.env.DB_HOST,
port: process.env.DB_PORT,
user: process.env.DB_USER,
password: process.env.DB_PASSWORD,
database: process.env.DB_DATABASE,
schema: process.env.DB_SCHEMA,
};
@lifeCycleObserver('datasource')
export class AuthenticationDbDataSource
extends juggler.DataSource
implements LifeCycleObserver
{
static dataSourceName = SubscriptionDbSourceName;
static readonly defaultConfig = config;
constructor(
// You need to set datasource configuration name as 'datasources.config.Authentication' otherwise you might get Errors
@inject(`datasources.config.${SubscriptionDbSourceName}`, {optional: true})
dsConfig: object = config,
) {
super(dsConfig);
}
}
Migrations
The migrations required for this service can be copied from the service. You can customize or cherry-pick the migrations in the copied files according to your specific requirements and then apply them to the DB.