chore: add invoice and subscription entities
This commit is contained in:
@@ -0,0 +1,22 @@
|
||||
import { Column, Entity, ManyToOne } from "typeorm";
|
||||
|
||||
import { BaseEntity } from "../../../common/entities/base.entity";
|
||||
import { DanakService } from "../../danak-services/entities/danak-service.entity";
|
||||
|
||||
@Entity()
|
||||
export class SubscriptionPlan extends BaseEntity {
|
||||
@Column({ type: "varchar", length: 100, nullable: false })
|
||||
name: string;
|
||||
|
||||
@Column({ type: "int", nullable: false })
|
||||
duration: number;
|
||||
|
||||
@Column({ type: "decimal", precision: 10, scale: 2, nullable: false })
|
||||
price: number;
|
||||
|
||||
@Column({ type: "boolean", default: true })
|
||||
isActive: boolean;
|
||||
|
||||
@ManyToOne(() => DanakService, (danakService) => danakService.subscriptionPlans, { nullable: false, onDelete: "CASCADE" })
|
||||
service: DanakService;
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
import { Column, Entity, ManyToOne } from "typeorm";
|
||||
|
||||
import { SubscriptionPlan } from "./subscription.entity";
|
||||
import { BaseEntity } from "../../../common/entities/base.entity";
|
||||
import { User } from "../../users/entities/user.entity";
|
||||
|
||||
@Entity()
|
||||
export class UserSubscription extends BaseEntity {
|
||||
@ManyToOne(() => User, (user) => user.subscriptions, { nullable: false, onDelete: "CASCADE" })
|
||||
user: User;
|
||||
|
||||
@ManyToOne(() => SubscriptionPlan, { nullable: false, onDelete: "CASCADE" })
|
||||
plan: SubscriptionPlan;
|
||||
|
||||
@Column({ type: "timestamp", nullable: false }) // When the subscription started
|
||||
startDate: Date;
|
||||
|
||||
@Column({ type: "timestamp", nullable: false }) // When it expires
|
||||
endDate: Date;
|
||||
|
||||
@Column({ type: "boolean", default: false }) // Whether the user canceled it
|
||||
isCanceled: boolean;
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
import { Injectable } from "@nestjs/common";
|
||||
|
||||
@Injectable()
|
||||
export class SubscriptionsService {}
|
||||
@@ -0,0 +1,12 @@
|
||||
import { Injectable } from "@nestjs/common";
|
||||
import { InjectRepository } from "@nestjs/typeorm";
|
||||
import { Repository } from "typeorm";
|
||||
|
||||
import { SubscriptionPlan } from "../entities/subscription.entity";
|
||||
|
||||
@Injectable()
|
||||
export class SubscriptionsRepository extends Repository<SubscriptionPlan> {
|
||||
constructor(@InjectRepository(SubscriptionPlan) subscriptionPlanRepository: Repository<SubscriptionPlan>) {
|
||||
super(subscriptionPlanRepository.target, subscriptionPlanRepository.manager, subscriptionPlanRepository.queryRunner);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
import { Injectable } from "@nestjs/common";
|
||||
import { InjectRepository } from "@nestjs/typeorm";
|
||||
import { Repository } from "typeorm";
|
||||
|
||||
@Injectable()
|
||||
export class UserSubscriptionsRepository extends Repository<UserSubscriptionsRepository> {
|
||||
constructor(@InjectRepository(UserSubscriptionsRepository) userSubscriptionsRepository: Repository<UserSubscriptionsRepository>) {
|
||||
super(userSubscriptionsRepository.target, userSubscriptionsRepository.manager, userSubscriptionsRepository.queryRunner);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
import { Controller } from "@nestjs/common";
|
||||
|
||||
@Controller("subscriptions")
|
||||
export class SubscriptionsController {}
|
||||
@@ -0,0 +1,17 @@
|
||||
import { Module } from "@nestjs/common";
|
||||
import { TypeOrmModule } from "@nestjs/typeorm";
|
||||
|
||||
import { SubscriptionPlan } from "./entities/subscription.entity";
|
||||
import { UserSubscription } from "./entities/user-subscription.entity";
|
||||
import { SubscriptionsService } from "./providers/subscriptions.service";
|
||||
import { SubscriptionsRepository } from "./repositories/subscriptions.repository";
|
||||
import { UserSubscriptionsRepository } from "./repositories/user-subscriptions.repository";
|
||||
import { SubscriptionsController } from "./subscriptions.controller";
|
||||
|
||||
@Module({
|
||||
imports: [TypeOrmModule.forFeature([SubscriptionPlan, UserSubscription])],
|
||||
providers: [SubscriptionsService, SubscriptionsRepository, UserSubscriptionsRepository],
|
||||
controllers: [SubscriptionsController],
|
||||
exports: [SubscriptionsService],
|
||||
})
|
||||
export class SubscriptionsModule {}
|
||||
Reference in New Issue
Block a user