File size: 2,547 Bytes
8a24f2c
 
 
 
 
 
9a951d7
6f49b87
9a951d7
 
53dc52c
 
 
910c878
9ffaa46
 
6fb7573
86063f3
 
9a951d7
8a24f2c
 
9a951d7
 
 
 
 
 
fbcc12a
 
 
 
 
 
 
 
 
 
0a4025a
fbcc12a
 
 
 
8a24f2c
 
 
6f49b87
9a951d7
 
53dc52c
 
 
910c878
9ffaa46
 
6fb7573
86063f3
 
8a24f2c
9a951d7
 
8a24f2c
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { UsersModule } from './modules/users/users.module';
import { AuthModule } from './modules/auth/auth.module';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { ConfigModule, ConfigService } from '@nestjs/config';
import { ProfileModule } from './modules/profile/profile.module';
import { OnboardingModule } from './modules/onboarding/onboarding.module';
import { ResumeModule } from './modules/resume/resume.module';
import { ScheduleModule } from '@nestjs/schedule';
import { ScraperModule } from './modules/scraper/scraper.module';
import { JobsModule } from './modules/jobs/jobs.module';
import { CoursesModule } from './modules/courses/courses.module';
import { MockInterviewModule } from './modules/mock-interview/mock-interview.module';
import { DocumentGenerationModule } from './modules/document-generation/document-generation.module';
import { ApplicationsModule } from './modules/applications/applications.module';
import { VerificationModule } from './modules/verification/verification.module';
import { CampaignsModule } from './modules/campaigns/campaigns.module';

@Module({
  imports: [
    ConfigModule.forRoot({ 
      isGlobal: true,
      envFilePath: '.env',
    }), 
    TypeOrmModule.forRootAsync({
      inject: [ConfigService],
      useFactory: (config: ConfigService) => {
        const isProd = config.get<string>('NODE_ENV') === 'production';
        return {
          type: 'postgres',
          host: config.get<string>('DB_HOST'),
          port: config.get<number>('DB_PORT'),
          username: config.get<string>('DB_USERNAME'),
          password: config.get<string>('DB_PASSWORD'),
          database: config.get<string>('DB_NAME') || config.get<string>('DB_DATABASE'),
          entities: [__dirname + '/modules/**/*.entity{.ts,.js}'],
          synchronize: true, // Enabled for automatic table creation
          logging: config.get<string>('NODE_ENV') === 'development',
          ssl: isProd ? { rejectUnauthorized: false } : false,
        };
      },
    }),
    UsersModule,
    AuthModule,
    ProfileModule,
    OnboardingModule,
    ResumeModule,
    ScraperModule,
    ScheduleModule.forRoot(),
    JobsModule,
    CoursesModule,
    MockInterviewModule,
    DocumentGenerationModule,
    ApplicationsModule,
    VerificationModule,
    CampaignsModule,
  ],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {}