import { createOsmClientWithCache } from './clients/geocoding'; import { createOpenmeteoClientWithCache } from './clients/weather'; import { Module, geocodingProviderDependency, packagesRepositoryDependency, packagesServiceDependency, weatherProviderDependency, } from './dependencies'; import { PackagesController } from './packages.controller'; import { PackagesService } from './packages.service'; import { createSamplePackagesRepository } from './storage/samplePackagesRepository'; @Module({ controllers: [PackagesController], providers: [ { provide: packagesServiceDependency, useClass: PackagesService, }, { provide: geocodingProviderDependency, useValue: createOsmClientWithCache(), }, { provide: weatherProviderDependency, useValue: createOpenmeteoClientWithCache(), }, { provide: packagesRepositoryDependency, useFactory: createSamplePackagesRepository, }, ], }) // eslint-disable-next-line @typescript-eslint/no-extraneous-class export class AppModule {}