import { Module } from '@nestjs/common'; import { ConfigModule } from '@nestjs/config'; import { TypeOrmModule } from '@nestjs/typeorm'; import { DatabaseModule } from '@it0/database'; // Domain Entities import { Notification } from './domain/entities/notification.entity'; import { NotificationRead } from './domain/entities/notification-read.entity'; import { NotificationTenantTarget } from './domain/entities/notification-tenant-target.entity'; // Infrastructure import { NotificationRepository } from './infrastructure/repositories/notification.repository'; import { ChannelRepository } from './infrastructure/repositories/channel.repository'; import { CampaignRepository } from './infrastructure/repositories/campaign.repository'; import { SegmentRepository } from './infrastructure/repositories/segment.repository'; import { DevicePushTokenRepository } from './infrastructure/repositories/device-push-token.repository'; // Application Services import { EventTriggerService } from './application/services/event-trigger.service'; import { OfflinePushService } from './application/services/offline-push.service'; import { FcmProvider } from './application/services/push-providers/fcm.provider'; import { HmsProvider } from './application/services/push-providers/hms.provider'; import { XiaomiProvider } from './application/services/push-providers/xiaomi.provider'; import { OppoProvider } from './application/services/push-providers/oppo.provider'; import { VivoProvider } from './application/services/push-providers/vivo.provider'; // Controllers import { NotificationAdminController } from './interfaces/rest/controllers/notification-admin.controller'; import { NotificationUserController } from './interfaces/rest/controllers/notification-user.controller'; import { NotificationChannelController } from './interfaces/rest/controllers/notification-channel.controller'; import { CampaignAdminController } from './interfaces/rest/controllers/campaign-admin.controller'; import { SegmentAdminController } from './interfaces/rest/controllers/segment-admin.controller'; import { DevicePushTokenController } from './interfaces/rest/controllers/device-push-token.controller'; @Module({ imports: [ ConfigModule.forRoot({ isGlobal: true }), DatabaseModule.forRoot(), TypeOrmModule.forFeature([Notification, NotificationRead, NotificationTenantTarget]), ], controllers: [ NotificationAdminController, NotificationUserController, NotificationChannelController, CampaignAdminController, SegmentAdminController, DevicePushTokenController, ], providers: [ NotificationRepository, ChannelRepository, CampaignRepository, SegmentRepository, DevicePushTokenRepository, FcmProvider, HmsProvider, XiaomiProvider, OppoProvider, VivoProvider, OfflinePushService, EventTriggerService, ], }) export class NotificationModule {}