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 { ParsianProvider } from './implementations/parsian.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 { InquiryResultCache, InquiryResultCacheSchema, } from './schemas/inquiry-result-cache.schema'; import { CentInsurCarPolicyClient } from './shared/centinsur-car-policy.client'; import { CentInsurCarProviderSupport } from './shared/centinsur-car-provider.support'; import { GeneralTokenService } from './services/general-token.service'; import { InquiryResultCacheService } from './services/inquiry-result-cache.service'; /** * Provider adapters, factory, and orchestration strategy. */ @Module({ imports: [ MongooseModule.forFeature([ { name: GeneralToken.name, schema: GeneralTokenSchema }, { name: InquiryResultCache.name, schema: InquiryResultCacheSchema }, ]), ], providers: [ HamtaProvider, MoallemProvider, ParsianProvider, TejaratNouProvider, AmitisProvider, GeneralTokenService, InquiryResultCacheService, CentInsurCarPolicyClient, CentInsurCarProviderSupport, ProviderFactory, ProviderOrchestratorService, ], exports: [ ProviderFactory, ProviderOrchestratorService, GeneralTokenService, InquiryResultCacheService, ], }) export class ProvidersModule {}