@sourceloop/ctrl-plane-subscription-service
Version:
Subscription management microservice for SaaS control plane.
73 lines (62 loc) • 1.59 kB
text/typescript
import {model, property, belongsTo} from '@loopback/repository';
import {SubscriptionStatus} from '../enums/subscription-status.enum';
import {numericEnumValues} from '../utils';
import {UserModifiableEntity} from '@sourceloop/core';
import {Plan} from './plan.model';
import {Invoice} from './invoice.model';
({
name: 'subscriptions',
})
export class Subscription extends UserModifiableEntity {
({
type: 'string',
id: true,
generated: true,
})
id: string;
({
type: 'string',
required: true,
name: 'subscriber_id',
})
subscriberId: string;
({
type: 'string',
required: true,
name: 'start_date',
})
startDate: string;
({
type: 'string',
required: true,
name: 'end_date',
})
endDate: string;
({
type: 'number',
required: true,
description:
'status of the subscription, it can be - 0(pending), 1(active), 2(inactive), 3(cancelled) and 4(expired)',
jsonSchema: {
enum: numericEnumValues(SubscriptionStatus),
},
})
status: SubscriptionStatus;
(() => Plan, undefined, {
description: 'plan id of the subscription',
name: 'plan_id',
})
planId: string;
(() => Invoice, undefined, {
description: 'invoice id of the subscription',
name: 'invoice_id',
})
invoiceId: string;
constructor(data?: Partial<Subscription>) {
super(data);
}
}
export interface SubscriptionRelations {
plan: Plan;
}
export type SubscriptionWithRelations = Subscription & SubscriptionRelations;