import { Module } from '@nestjs/common'; import { AppController } from './app.controller'; import { AppService } from './app.service'; import { ParkioModule } from './parkio/parkio.module'; import { IswordModule } from './isword/isword.module'; import { AuthModule } from './auth/auth.module'; import { UsersModule } from './users/users.module'; import { ConfigModule, ConfigService } from '@nestjs/config'; import { DomainrproxyModule } from './domainrproxy/domainrproxy.module'; import configuration from './config/configuration'; import { CacheInterceptor, CacheModule } from '@nestjs/cache-manager'; import { IrcbotModule } from './ircbot/ircbot.module'; import { PrometheusModule } from '@willsoto/nestjs-prometheus'; import { MinioModule } from './minio/minio.module'; import { KvModule } from './kv/kv.module'; import { BullModule } from '@nestjs/bull'; import { ScheduleModule } from '@nestjs/schedule'; import { RedisClientOptions } from 'redis'; import { redisStore } from 'cache-manager-redis-yet'; import { RedirectsModule } from './redirects/redirects.module'; import { FileModule } from './file/file.module'; import { FocoLiveModule } from './foco-live/foco-live.module'; import { PowModule } from './pow/pow.module'; import { FocoCoffeeModule } from './fococoffee/fococoffee.module'; import { JobsModule } from './jobs/jobs.module'; import { RedisModule, RedisModuleOptions } from '@liaoliaots/nestjs-redis'; import { AdsbExchangeModule } from './adsb-exchange/adsb-exchange.module'; import { APP_INTERCEPTOR } from '@nestjs/core'; import { JunkDrawerModule } from './junk-drawer/junk-drawer.module'; import { EmailModule } from './email/email.module'; import { ContactModule } from './contact/contact.module'; import { HoardingModule } from './hoarding/hoarding.module'; import { NamesModule } from './names/names.module'; import { AssemblyAiModule } from './assembly-ai/assembly-ai.module'; import { ClaudeModule } from './claude/claude.module'; import { BabyNamesModule } from './baby-names/baby-names.module'; @Module({ imports: [ ScheduleModule.forRoot(), ConfigModule.forRoot({ isGlobal: true, load: [configuration], }), RedisModule.forRootAsync({ imports: [ConfigModule], inject: [ConfigService], useFactory: async ( configService: ConfigService, ): Promise => { return { config: { url: configService.get('redis.url'), db: configService.get('redis.db'), family: 6, }, }; }, }), // CacheModule.registerAsync({ // isGlobal: true, // inject: [ConfigService], // imports: [ConfigModule], // useFactory: async (configService: ConfigService) => ({ // store: redisStore, // url: configService.get('redis.url'), // family: 6, // database: configService.get('redis.db'), // }), // }), CacheModule.register({ isGlobal: true }), BullModule.forRootAsync({ imports: [ConfigModule], inject: [ConfigService], useFactory: async (configService: ConfigService) => { const config = { redis: { url: configService.get('redis.url'), db: configService.get('redis.db'), family: 6, }, }; return config; }, }), PrometheusModule.register({ defaultMetrics: { enabled: false, }, defaultLabels: { app: 'us.dev api', }, }), ParkioModule, IswordModule, AuthModule, UsersModule, DomainrproxyModule, IrcbotModule, MinioModule, KvModule, RedirectsModule, FileModule, FocoLiveModule, PowModule, FocoCoffeeModule, JobsModule, AdsbExchangeModule, JunkDrawerModule, EmailModule, ContactModule, HoardingModule, NamesModule, AssemblyAiModule, ClaudeModule, BabyNamesModule, ], controllers: [AppController], providers: [ AppService, { provide: APP_INTERCEPTOR, useClass: CacheInterceptor, }, ], exports: [PrometheusModule], }) export class AppModule {}