diff --git a/src/modules/payments/payments.controller.ts b/src/modules/payments/payments.controller.ts index 9986172..6928439 100644 --- a/src/modules/payments/payments.controller.ts +++ b/src/modules/payments/payments.controller.ts @@ -1,5 +1,5 @@ import { Body, Controller, Post } from '@nestjs/common'; -import { PaymentsService } from './payments.service'; +import { PaymentsService } from './services/payments.service'; import { CreatePaymentDto } from './dto/create-payment.dto'; @Controller('payments') @@ -7,7 +7,7 @@ export class PaymentsController { constructor(private readonly paymentsService: PaymentsService) {} @Post() - async payment(@Body() createPaymentDto: CreatePaymentDto) { + async payment(@Body() createPaymentDto: CreatePaymentDto): Promise { return this.paymentsService.store(createPaymentDto); } } diff --git a/src/modules/payments/payments.module.ts b/src/modules/payments/payments.module.ts index becdbe2..741ea02 100644 --- a/src/modules/payments/payments.module.ts +++ b/src/modules/payments/payments.module.ts @@ -1,20 +1,34 @@ import { Module } from '@nestjs/common'; -import { PaymentsService } from './payments.service'; +import { PaymentsService } from './services/payments.service'; import { PaymentsController } from './payments.controller'; import { HttpModule } from '@nestjs/axios'; import { TypeOrmModule } from '@nestjs/typeorm'; import { Payment } from './entities/payment.entity'; -import { BullModule } from '@nestjs/bullmq'; +import { HealthModule } from '../health/health.module'; +import { PaymentDefaultProcessor } from './processor/payment-default.processor'; +import { RetryPaymentService } from './services/retry-payment.service'; +import { PaymentProcessor } from './processor/payment.processor'; +import { ProcessPaymentService } from './services/process-payment.service'; +import { QueueModule } from '../queue/queue.module'; +import { DatabaseModule } from '../database/database.module'; +import { PaymentFallbackProcessor } from './processor/payment-fallback.processor'; @Module({ imports: [ TypeOrmModule.forFeature([Payment]), - BullModule.registerQueue({ - name: 'payments', - }), HttpModule, + HealthModule, + QueueModule, + DatabaseModule, ], controllers: [PaymentsController], - providers: [PaymentsService], + providers: [ + PaymentsService, + PaymentDefaultProcessor, + RetryPaymentService, + PaymentProcessor, + ProcessPaymentService, + PaymentFallbackProcessor, + ], }) export class PaymentsModule {} diff --git a/src/modules/payments/payments.service.ts b/src/modules/payments/payments.service.ts deleted file mode 100644 index e0e7b80..0000000 --- a/src/modules/payments/payments.service.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { Injectable, Logger } from '@nestjs/common'; -import { CreatePaymentDto } from './dto/create-payment.dto'; -import { HttpService } from '@nestjs/axios'; -import { catchError, firstValueFrom } from 'rxjs'; -import { AxiosError } from 'axios'; -import { InjectRepository } from '@nestjs/typeorm'; -import { Payment } from './entities/payment.entity'; -import { Repository } from 'typeorm'; -import { Queue } from 'bullmq'; -import { InjectQueue } from '@nestjs/bullmq'; - -@Injectable() -export class PaymentsService { - private readonly logger = new Logger(PaymentsService.name); - - constructor( - @InjectQueue('payments') private readonly paymentsQueue: Queue, - private readonly httpService: HttpService, - @InjectRepository(Payment) private readonly repository: Repository, - ) {} - - async store(createPaymentDto: CreatePaymentDto) { - const urlPaymentDefault = 'http://192.168.1.126:8002/payments'; - const { data } = await firstValueFrom( - this.httpService.post(urlPaymentDefault, createPaymentDto).pipe( - catchError((error: AxiosError) => { - this.logger.error(error?.response); - throw 'An error happened!'; - }), - ), - ); - await this.repository.save({ - ...createPaymentDto, - paymentProcessor: 'default', - }); - this.logger.log(data); - return data; - } -}