fix: bug in repositry of subscriptions
This commit is contained in:
@@ -0,0 +1,27 @@
|
||||
import { ApiProperty } from "@nestjs/swagger";
|
||||
import { IsBoolean, IsInt, IsNotEmpty, IsString, Length } from "class-validator";
|
||||
|
||||
import { SubscriptionMessage } from "../../../common/enums/message.enum";
|
||||
|
||||
export class CreateSubscriptionPlanDto {
|
||||
@IsNotEmpty({ message: SubscriptionMessage.NAME_REQUIRED })
|
||||
@IsString({ message: SubscriptionMessage.NAME_SHOULD_BE_STRING })
|
||||
@Length(3, 100, { message: SubscriptionMessage.NAME_LENGTH })
|
||||
@ApiProperty({ description: "the name of the subscription plan", example: "یک ماهه" })
|
||||
name: string;
|
||||
|
||||
@IsNotEmpty({ message: SubscriptionMessage.DURATION_REQUIRED })
|
||||
@IsInt({ message: SubscriptionMessage.DURATION_SHOULD_BE_INT })
|
||||
@ApiProperty({ description: "the duration of the subscription plan in days", example: 30 })
|
||||
duration: number;
|
||||
|
||||
@IsNotEmpty({ message: SubscriptionMessage.PRICE_REQUIRED })
|
||||
@IsInt({ message: SubscriptionMessage.PRICE_SHOULD_BE_INT })
|
||||
@ApiProperty({ description: "the price of the subscription plan", example: 10_000_000 })
|
||||
price: number;
|
||||
|
||||
@IsNotEmpty({ message: SubscriptionMessage.IS_ACTIVE_REQUIRED })
|
||||
@IsBoolean({ message: SubscriptionMessage.IS_ACTIVE_SHOULD_BE_BOOLEAN })
|
||||
@ApiProperty({ description: "the status of the subscription plan", example: true })
|
||||
isActive: boolean;
|
||||
}
|
||||
@@ -1,19 +1,22 @@
|
||||
// eslint-disable-next-line import/no-named-as-default
|
||||
import Decimal from "decimal.js";
|
||||
import { Column, Entity, ManyToOne } from "typeorm";
|
||||
|
||||
import { BaseEntity } from "../../../common/entities/base.entity";
|
||||
import { DecimalTransformer } from "../../../common/transformers/decimal.transformer";
|
||||
import { DanakService } from "../../danak-services/entities/danak-service.entity";
|
||||
|
||||
@Entity()
|
||||
export class SubscriptionPlan extends BaseEntity {
|
||||
@Column({ type: "varchar", length: 100, nullable: false })
|
||||
@Column({ type: "varchar", length: 150, nullable: false })
|
||||
name: string;
|
||||
|
||||
@Column({ type: "int", nullable: false })
|
||||
duration: number;
|
||||
|
||||
@Column({ type: "decimal", precision: 10, scale: 2, nullable: false })
|
||||
price: number;
|
||||
|
||||
@Column({ type: "decimal", precision: 16, scale: 2, nullable: false, transformer: new DecimalTransformer() })
|
||||
price: Decimal;
|
||||
//
|
||||
@Column({ type: "boolean", default: true })
|
||||
isActive: boolean;
|
||||
|
||||
|
||||
@@ -12,12 +12,12 @@ export class UserSubscription extends BaseEntity {
|
||||
@ManyToOne(() => SubscriptionPlan, { nullable: false, onDelete: "CASCADE" })
|
||||
plan: SubscriptionPlan;
|
||||
|
||||
@Column({ type: "timestamp", nullable: false }) // When the subscription started
|
||||
@Column({ type: "timestamp", nullable: false })
|
||||
startDate: Date;
|
||||
|
||||
@Column({ type: "timestamp", nullable: false }) // When it expires
|
||||
@Column({ type: "timestamp", nullable: false })
|
||||
endDate: Date;
|
||||
|
||||
@Column({ type: "boolean", default: false }) // Whether the user canceled it
|
||||
@Column({ type: "boolean", default: false })
|
||||
isCanceled: boolean;
|
||||
}
|
||||
|
||||
@@ -1,4 +1,13 @@
|
||||
import { Injectable } from "@nestjs/common";
|
||||
|
||||
import { CreateSubscriptionPlanDto } from "../DTO/create-subscription.dto";
|
||||
import { SubscriptionsPlanRepository } from "../repositories/subscriptions.repository";
|
||||
|
||||
@Injectable()
|
||||
export class SubscriptionsService {}
|
||||
export class SubscriptionsService {
|
||||
constructor(private readonly subscriptionsPlanRepository: SubscriptionsPlanRepository) {}
|
||||
|
||||
async createSubscriptionsPlan(createDto: CreateSubscriptionPlanDto) {
|
||||
console.log(this.subscriptionsPlanRepository, createDto);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@ import { Repository } from "typeorm";
|
||||
import { SubscriptionPlan } from "../entities/subscription.entity";
|
||||
|
||||
@Injectable()
|
||||
export class SubscriptionsRepository extends Repository<SubscriptionPlan> {
|
||||
export class SubscriptionsPlanRepository extends Repository<SubscriptionPlan> {
|
||||
constructor(@InjectRepository(SubscriptionPlan) subscriptionPlanRepository: Repository<SubscriptionPlan>) {
|
||||
super(subscriptionPlanRepository.target, subscriptionPlanRepository.manager, subscriptionPlanRepository.queryRunner);
|
||||
}
|
||||
|
||||
@@ -2,9 +2,11 @@ import { Injectable } from "@nestjs/common";
|
||||
import { InjectRepository } from "@nestjs/typeorm";
|
||||
import { Repository } from "typeorm";
|
||||
|
||||
import { UserSubscription } from "../entities/user-subscription.entity";
|
||||
|
||||
@Injectable()
|
||||
export class UserSubscriptionsRepository extends Repository<UserSubscriptionsRepository> {
|
||||
constructor(@InjectRepository(UserSubscriptionsRepository) userSubscriptionsRepository: Repository<UserSubscriptionsRepository>) {
|
||||
export class UserSubscriptionsRepository extends Repository<UserSubscription> {
|
||||
constructor(@InjectRepository(UserSubscription) userSubscriptionsRepository: Repository<UserSubscription>) {
|
||||
super(userSubscriptionsRepository.target, userSubscriptionsRepository.manager, userSubscriptionsRepository.queryRunner);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,20 @@
|
||||
import { Controller } from "@nestjs/common";
|
||||
import { ApiOperation } from "@nestjs/swagger";
|
||||
|
||||
import { SubscriptionsService } from "./providers/subscriptions.service";
|
||||
import { AuthGuards } from "../../common/decorators/auth-guard.decorator";
|
||||
import { Roles } from "../../common/decorators/roles.decorator";
|
||||
import { RoleEnum } from "../users/enums/role.enum";
|
||||
|
||||
@Controller("subscriptions")
|
||||
export class SubscriptionsController {}
|
||||
export class SubscriptionsController {
|
||||
constructor(private readonly subscriptionService: SubscriptionsService) {}
|
||||
|
||||
@ApiOperation({ summary: "Create a subscription plan" })
|
||||
@AuthGuards()
|
||||
@Roles(RoleEnum.ADMIN)
|
||||
createSubscription() {
|
||||
console.log(this.subscriptionService);
|
||||
// return this.subscriptionService.createSubscriptionsPlan();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,13 +4,13 @@ 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 { SubscriptionsPlanRepository } 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],
|
||||
providers: [SubscriptionsService, SubscriptionsPlanRepository, UserSubscriptionsRepository],
|
||||
controllers: [SubscriptionsController],
|
||||
exports: [SubscriptionsService],
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user