app module

PHOTO EMBED

Tue Nov 05 2024 11:44:25 GMT+0000 (Coordinated Universal Time)

Saved by @saurabhp643

import { Module } from '@nestjs/common';
import { ConfigModule, ConfigService } from '@nestjs/config';
import { ScheduleModule } from '@nestjs/schedule';
import { AccountModule } from './module/account.module';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { OrderModule } from './module/order.module';
// Removed TypeOrmModule and Order entity
import { TypeOrmModule } from '@nestjs/typeorm';
import { CtraderAccountService } from './services/exchange/cTrader/account.service';
import { CtraderBotService } from './services/exchange/cTrader/bot.service';
import { CtraderEvaluationService } from './services/exchange/cTrader/evaluation.service';
import { CtraderOrderService } from './services/exchange/cTrader/order.service';
import { CtraderConnectionService } from './services/exchange/cTrader/connection.service';
import { EvaluationController } from './controllers/evaluation.controller';
import { BotController } from './controllers/bot.controller';
import { BullModule } from '@nestjs/bull';
import { activeBotQueue } from 'config/constant';
import { ExpressAdapter } from '@nestjs/platform-express';
import { CtraderAuthService } from './services/exchange/cTrader/auth.service';
import { AuthController } from './controllers/auth.controller';
import { SpotwareService } from './services/exchange/cTrader/spotware.account.service';
import { AccountController } from './controllers/account.controller';
import { OrderController } from './controllers/order.controller';
import { OrderPollingService } from './services/exchange/cTrader/order.polling.service';
import { EvaluationBotProcess } from './services/botProcess/evaluationBot.process';
import { IOrderPollingService } from './services/Interfaces/IOrderPollingService';
import { DailyEquityModule } from './module/dailyEquity.module';

@Module({
  imports: [ 
    // Load environment variables globally
    ConfigModule.forRoot({
      isGlobal: true,
      envFilePath: '.env', // Consolidated .env file path specification
    }),
    // Removed TypeORM configuration as it's no longer needed
    ScheduleModule.forRoot(),
    AccountModule,
    // BULLMQ
    BullModule.forRoot({
      redis: {
        host: 'localhost',
        port: 6379,
      },
    }),
    BullModule.registerQueue({
      name: activeBotQueue,
      defaultJobOptions: {
        attempts: 2,
      },
    }),
  ],
  controllers: [
    AppController, 
    EvaluationController, 
    BotController, 
    AuthController, 
    AccountController, 
    OrderController,
  ],
  providers: [
    AppService,
    {
      provide: 'IAccountInterface', 
      useClass: process.env.exchange === 'CTRADER' ? CtraderAccountService : CtraderAccountService,
    },
    {
      provide: 'IBotInterface',
      useClass: process.env.exchange === 'CTRADER' ? CtraderBotService : CtraderBotService,
    },
    {
      provide: 'IBotProcessInterface',
      useClass: process.env.botType === 'Evaluation' ? EvaluationBotProcess : EvaluationBotProcess,
    },
    {
      provide: 'IEvaluationInterface',
      useClass: process.env.exchange === 'CTRADER' ? CtraderEvaluationService : CtraderEvaluationService,
    },
    {
      provide: 'IOrderInterface',
      useClass: process.env.exchange === 'CTRADER' ? CtraderOrderService : CtraderOrderService,
    },
    {
      provide: 'IConnectionInterface',
      useClass: process.env.exchange === 'CTRADER' ? CtraderConnectionService : CtraderConnectionService,
    },
    {
      provide: 'IAuthInterface',
      useClass: process.env.exchange === 'CTRADER' ? CtraderAuthService : CtraderAuthService,
    },
    {
      provide: 'IOrderPollingService',  // Added IOrderPollingService provider
      useClass:process.env.exchange === 'CTRADER' ? OrderPollingService : OrderPollingService,
    },
    SpotwareService, 
    OrderPollingService, // Explicitly added OrderPollingService in providers
    ConfigService,
  ],
})
export class AppModule {}
content_copyCOPY