File size: 4,545 Bytes
fd07338
 
ffd0171
fd07338
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
990c0e8
 
f5957a1
 
92c8a69
 
 
810c001
fd07338
 
 
 
 
8cffb49
 
fd07338
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9f03bd9
1452e50
fcab6da
fd07338
 
5d9c8a5
fd07338
 
 
ffd0171
fd07338
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
990c0e8
 
f5957a1
 
92c8a69
 
 
8cffb49
 
810c001
fd07338
 
 
 
45a5ec1
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
import { Module } from '@nestjs/common';
import { ConfigModule, ConfigService } from '@nestjs/config';
import { ScheduleModule as NestScheduleModule } from '@nestjs/schedule';
import { TypeOrmModule } from '@nestjs/typeorm';
import { AuthModule } from './modules/auth/auth.module';
import { EmailModule } from './modules/email/email.module';
import { CampusModule } from './modules/campus/campus.module';
import { CoursesModule } from './modules/courses/courses.module';
import { EnrollmentsModule } from './modules/enrollments/enrollments.module';
import { FilesModule } from './modules/files/files.module';
import { AssignmentsModule } from './modules/assignments/assignments.module';
import { GradesModule } from './modules/grades/grades.module';
import { AttendanceModule } from './modules/attendance/attendance.module';
import { QuizzesModule } from './modules/quizzes/quizzes.module';
import { LabsModule } from './modules/labs/labs.module';
import { NotificationsModule } from './modules/notifications/notifications.module';
import { MessagingModule } from './modules/messaging/messaging.module';
import { DiscussionsModule } from './modules/discussions/discussions.module';
import { AnnouncementsModule } from './modules/announcements/announcements.module';
import { CommunityModule } from './modules/community/community.module';
import { ScheduleModule } from './modules/schedule/schedule.module';
import { CourseMaterialsModule } from './modules/course-materials/course-materials.module';
import { TasksModule } from './modules/tasks/tasks.module';
import { ReportsModule } from './modules/reports/reports.module';
import { SearchModule } from './modules/search/search.module';
import { AnalyticsModule } from './modules/analytics/analytics.module';
import { SecurityModule } from './modules/security/security.module';
import { SettingsModule } from './modules/settings/settings.module';
import { MonitoringModule } from './modules/monitoring/monitoring.module';
import { BackupModule } from './modules/backup/backup.module';
import { StudyGroupsModule } from './modules/study-groups/study-groups.module';
import { OfficeHoursModule } from './modules/office-hours/office-hours.module';
import { PeerReviewModule } from './modules/peer-review/peer-review.module';
import { PaymentsModule } from './modules/payments/payments.module';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import databaseConfig from './config/database.config';
import { YoutubeModule } from './modules/youtube/youtube.module';
import { GoogleDriveModule } from './modules/google-drive/google-drive.module';
import { QuestionBankModule } from './modules/question-bank/question-bank.module';
import { ExamsModule } from './modules/exams/exams.module';

@Module({
  imports: [
    ConfigModule.forRoot({
      isGlobal: true,
      load: [databaseConfig],
      envFilePath: '.env',
    }),
    TypeOrmModule.forRootAsync({
      imports: [ConfigModule],
      inject: [ConfigService],
      useFactory: (configService: ConfigService) => {
        const dbConfig = configService.get('database');

        if (!dbConfig) {
          throw new Error('Database configuration is missing');
        }

        return {
          type: 'mysql',
          host: dbConfig.host,
          port: dbConfig.port,
          username: dbConfig.username,
          password: dbConfig.password,
          database: dbConfig.database,
          autoLoadEntities: true,
          migrations: [__dirname + '/database/migrations/*{.ts,.js}'],
          migrationsRun: false,
          synchronize: dbConfig.synchronize,
          logging: dbConfig.logging,
          ssl: dbConfig.ssl,
        };
      },
    }),
    NestScheduleModule.forRoot(),
    AuthModule,
    EmailModule,
    CampusModule,
    CoursesModule,
    EnrollmentsModule,
    YoutubeModule,
    GoogleDriveModule,
    FilesModule,
    AssignmentsModule,
    GradesModule,
    AttendanceModule,
    QuizzesModule,
    LabsModule,
    NotificationsModule,
    MessagingModule,
    DiscussionsModule,
    AnnouncementsModule,
    CommunityModule,
    ScheduleModule,
    CourseMaterialsModule,
    TasksModule,
    ReportsModule,
    SearchModule,
    AnalyticsModule,
    SecurityModule,
    SettingsModule,
    MonitoringModule,
    BackupModule,
    StudyGroupsModule,
    OfficeHoursModule,
    PeerReviewModule,
    QuestionBankModule,
    ExamsModule,
    PaymentsModule,
  ],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule { }