eduverse-backend / src /app.module.ts
amirhamdi's picture
feat(assessment): implement Question Bank and Exam Generator backend
ffd0171
Raw
History Blame Contribute Delete
4.55 kB
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 { }