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
Environment Variables
Name | Required | Description | Default Value |
---|
NODE_ENV | Y | Node environment value, i.e. `dev`, `test`, `prod | |
LOG_LEVEL | Y | Log level value, i.e. `error`, `warn`, `info`, `verbose`, `debug` | |
DB_HOST | Y | Hostname for the database server. | |
DB_PORT | Y | Port for the database server. | |
DB_USER | Y | User for the database. | |
DB_PASSWORD | Y | Password for the database user. | |
DB_DATABASE | Y | Database to connect to on the database server. | |
DB_SCHEMA | Y | Database schema used for the data source. In PostgreSQL, this will be `public` unless a schema is made explicitly for the service. | |
REDIS_HOST | Y | Hostname of the Redis server. | |
REDIS_PORT | Y | Port to connect to the Redis server over. | |
REDIS_URL | Y | Fully composed URL for Redis connection. Used instead of other settings if set. | |
REDIS_PASSWORD | Y | Password for Redis if authentication is enabled. | |
REDIS_DATABASE | Y | Database within Redis to connect to. | |
JWT_SECRET | Y | Symmetric signing key of the JWT token. | |
JWT_ISSUER | Y | Issuer of the JWT token. | |
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(
@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.
Database Schema