Files
us-api/src/app.module.ts

129 lines
4.1 KiB
TypeScript

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<RedisModuleOptions> => {
return {
config: {
url: configService.get<string>('redis.url'),
db: configService.get<number>('redis.db'),
family: 6,
},
};
},
}),
// CacheModule.registerAsync<RedisClientOptions>({
// isGlobal: true,
// inject: [ConfigService],
// imports: [ConfigModule],
// useFactory: async (configService: ConfigService) => ({
// store: redisStore,
// url: configService.get<string>('redis.url'),
// family: 6,
// database: configService.get<number>('redis.db'),
// }),
// }),
CacheModule.register({ isGlobal: true }),
BullModule.forRootAsync({
imports: [ConfigModule],
inject: [ConfigService],
useFactory: async (configService: ConfigService) => {
const config = {
redis: {
url: configService.get<string>('redis.url'),
db: configService.get<number>('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 {}