mirror of
https://github.com/Tria-plc/edr-platform.git
synced 2026-08-27 00:52:50 +00:00
129 lines
4.8 KiB
TypeScript
129 lines
4.8 KiB
TypeScript
import {
|
|
MiddlewareConsumer,
|
|
Module,
|
|
NestModule,
|
|
OnApplicationBootstrap,
|
|
} from '@nestjs/common';
|
|
import { ConfigModule, ConfigService } from '@nestjs/config';
|
|
import { ScheduleModule } from '@nestjs/schedule';
|
|
import { EventEmitterModule } from '@nestjs/event-emitter';
|
|
import { TypeOrmModule, TypeOrmModuleOptions } from '@nestjs/typeorm';
|
|
// Subpath import: the @tria-plc/iamapi-common barrel does not resolve under moduleResolution:"Node".
|
|
// Aliased to avoid clashing with the app's existing custom ./common/iam.module (remote IamGuard).
|
|
import { IamModule as TriaIamModule } from '@tria-plc/iamapi-common/iam.module';
|
|
import { DataSeeder } from '@tria-plc/iamapi-common/db/seed/seeder';
|
|
import { PrismaModule } from './common/prisma.module';
|
|
import { AuditModule } from './common/audit.module';
|
|
import { I18nModule } from './common/i18n/i18n.module';
|
|
import { LocaleMiddleware } from './common/i18n/locale.middleware';
|
|
import appConfig from './config/app.config';
|
|
import dbConfig from './config/database.config';
|
|
import iamDatabaseConfig from './config/iam-database.config';
|
|
import telebirrConfig from './config/telebirr.config';
|
|
import cbeConfig from './config/cbe.config';
|
|
import ebirrConfig from './config/ebirr.config';
|
|
import cardConfig from './config/card.config';
|
|
import waafiConfig from './config/waafi.config';
|
|
import faydaConfig from './config/fayda.config';
|
|
import rabbitmqConfig from './config/rabbitmq.config';
|
|
import { AuthModule } from './modules/auth/auth.module';
|
|
import { StationsModule } from './modules/stations/stations.module';
|
|
import { FleetModule } from './modules/fleet/fleet.module';
|
|
import { SchedulesModule } from './modules/schedules/schedules.module';
|
|
import { SearchModule } from './modules/search/search.module';
|
|
import { SeatsModule } from './modules/seats/seats.module';
|
|
import { BookingsModule } from './modules/bookings/bookings.module';
|
|
import { PaymentsModule } from './modules/payments/payments.module';
|
|
import { TicketsModule } from './modules/tickets/tickets.module';
|
|
import { PassengersModule } from './modules/passengers/passengers.module';
|
|
import { NotificationsModule } from './modules/notifications/notifications.module';
|
|
import { LoyaltyModule } from './modules/loyalty/loyalty.module';
|
|
import { WalletModule } from './modules/wallet/wallet.module';
|
|
import { PromosModule } from './modules/promos/promos.module';
|
|
import { LiveModule } from './modules/live/live.module';
|
|
import { SupportModule } from './modules/support/support.module';
|
|
import { DashboardModule } from './modules/dashboard/dashboard.module';
|
|
import { SegmentsModule } from './modules/segments/segments.module';
|
|
import { AgentsModule } from './modules/agents/agents.module';
|
|
import { ReportsModule } from './modules/reports/reports.module';
|
|
import { FraudModule } from './modules/fraud/fraud.module';
|
|
import { SeatClassesModule } from './modules/seat-classes/seat-classes.module';
|
|
import { FareEngineModule } from './modules/fare-engine/fare-engine.module';
|
|
import { VerifaydaModule } from './modules/verifayda/verifayda.module';
|
|
import { AuditModuleFeature } from './modules/audit/audit.module';
|
|
import { CurrenciesModule } from './modules/currencies/currencies.module';
|
|
|
|
@Module({
|
|
imports: [
|
|
ConfigModule.forRoot({
|
|
isGlobal: true,
|
|
load: [
|
|
appConfig,
|
|
dbConfig,
|
|
iamDatabaseConfig,
|
|
telebirrConfig,
|
|
cbeConfig,
|
|
ebirrConfig,
|
|
cardConfig,
|
|
waafiConfig,
|
|
faydaConfig,
|
|
rabbitmqConfig,
|
|
],
|
|
}),
|
|
ScheduleModule.forRoot(),
|
|
EventEmitterModule.forRoot(),
|
|
TypeOrmModule.forRootAsync({
|
|
inject: [ConfigService],
|
|
useFactory: (config: ConfigService): TypeOrmModuleOptions =>
|
|
config.get<TypeOrmModuleOptions>('iamDatabase')!,
|
|
}),
|
|
TriaIamModule.forRoot(),
|
|
PrismaModule,
|
|
AuditModule,
|
|
I18nModule,
|
|
AuthModule,
|
|
StationsModule,
|
|
FleetModule,
|
|
SchedulesModule,
|
|
SearchModule,
|
|
SeatsModule,
|
|
BookingsModule,
|
|
PaymentsModule,
|
|
TicketsModule,
|
|
PassengersModule,
|
|
NotificationsModule,
|
|
LoyaltyModule,
|
|
WalletModule,
|
|
PromosModule,
|
|
LiveModule,
|
|
SupportModule,
|
|
DashboardModule,
|
|
SegmentsModule,
|
|
AgentsModule,
|
|
ReportsModule,
|
|
FraudModule,
|
|
SeatClassesModule,
|
|
FareEngineModule,
|
|
VerifaydaModule,
|
|
AuditModuleFeature,
|
|
CurrenciesModule,
|
|
],
|
|
})
|
|
export class AppModule implements OnApplicationBootstrap {
|
|
constructor(
|
|
private readonly seeder: DataSeeder,
|
|
// private readonly edrOrgSeeder: EdrOrgSeeder,
|
|
// private readonly demoUsersSeeder: DemoUsersSeeder,
|
|
) { }
|
|
|
|
async onApplicationBootstrap() {
|
|
try {
|
|
await this.seeder.run();
|
|
} catch (err) {
|
|
console.error('[DataSeeder] Seed failed (non-fatal during IAM migration phase):', (err as Error).message);
|
|
}
|
|
// await this.edrOrgSeeder.run();
|
|
// await this.demoUsersSeeder.run();
|
|
}
|
|
}
|