/** * Notifications Module * * Provides notification functionality with WebSocket support */ import { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; import { JwtModule } from '@nestjs/jwt'; import { ConfigModule, ConfigService } from '@nestjs/config'; import { NotificationsController } from '../controllers/notifications.controller'; import { NotificationsGateway } from '../gateways/notifications.gateway'; import { NotificationService } from '../services/notification.service'; import { NotificationOrmEntity } from '../../infrastructure/persistence/typeorm/entities/notification.orm-entity'; import { TypeOrmNotificationRepository } from '../../infrastructure/persistence/typeorm/repositories/typeorm-notification.repository'; import { NOTIFICATION_REPOSITORY } from '@domain/ports/out/notification.repository'; @Module({ imports: [ TypeOrmModule.forFeature([NotificationOrmEntity]), JwtModule.registerAsync({ imports: [ConfigModule], useFactory: (configService: ConfigService) => ({ secret: configService.get('JWT_SECRET'), signOptions: { expiresIn: configService.get('JWT_ACCESS_EXPIRATION', '15m'), }, }), inject: [ConfigService], }), ], controllers: [NotificationsController], providers: [ NotificationsGateway, NotificationService, { provide: NOTIFICATION_REPOSITORY, useClass: TypeOrmNotificationRepository, }, ], exports: [NotificationService, NotificationsGateway, NOTIFICATION_REPOSITORY], }) export class NotificationsModule {}