import { Module } from '@nestjs/common'; import { MongooseModule } from '@nestjs/mongoose'; import { ProviderFactory } from './factory/provider.factory'; import { HamtaProvider } from './implementations/hamta.provider'; import { MoallemProvider } from './implementations/moallem.provider'; import { TejaratNouProvider } from './implementations/tejaratnou.provider'; import { AmitisProvider } from './implementations/amitis.provider'; import { ProviderOrchestratorService } from './strategy/provider-orchestrator.service'; import { GeneralToken, GeneralTokenSchema } from './schemas/general-token.schema'; import { CachedInquiryResult, CachedInquiryResultSchema } from './schemas/cached-inquiry-result.schema'; import { GeneralTokenService } from './services/general-token.service'; import { CachedInquiryResultService } from './services/cached-inquiry-result.service'; /** * Provider adapters, factory, and orchestration strategy. */ @Module({ imports: [ MongooseModule.forFeature([ { name: GeneralToken.name, schema: GeneralTokenSchema }, { name: CachedInquiryResult.name, schema: CachedInquiryResultSchema }, ]), ], providers: [ HamtaProvider, MoallemProvider, TejaratNouProvider, AmitisProvider, GeneralTokenService, CachedInquiryResultService, ProviderFactory, ProviderOrchestratorService, ], exports: [ProviderFactory, ProviderOrchestratorService, GeneralTokenService, CachedInquiryResultService], }) export class ProvidersModule {}