60 lines
2.2 KiB
TypeScript
60 lines
2.2 KiB
TypeScript
import { Module } from '@nestjs/common';
|
|
import { ConfigModule, ConfigService } from '@nestjs/config';
|
|
import { RedisModule } from '@nestjs-modules/ioredis';
|
|
import { LoggerModule } from 'nestjs-pino';
|
|
import { createPinoLoggerParams } from '@/common';
|
|
import { NapcatWebuiGatewaySessionService } from './application/napcat-webui-gateway-session.service';
|
|
import { NapcatWebuiGatewayConfigService } from './config/napcat-webui-gateway-config.service';
|
|
import { NAPCAT_WEBUI_GATEWAY_SESSION_STORE } from './domain/napcat-webui-gateway.types';
|
|
import { NapcatWebuiGatewayRedisStore } from './infrastructure/session/napcat-webui-gateway-redis.store';
|
|
import { NapcatWebuiGatewayTicketService } from './infrastructure/session/napcat-webui-gateway-ticket.service';
|
|
import { InternalSessionController } from './presentation/internal-session.controller';
|
|
|
|
@Module({
|
|
imports: [
|
|
ConfigModule.forRoot({
|
|
isGlobal: true,
|
|
envFilePath: `.env.${process.env.NODE_ENV || 'development'}`,
|
|
}),
|
|
LoggerModule.forRootAsync({
|
|
imports: [ConfigModule],
|
|
inject: [ConfigService],
|
|
/**
|
|
* Builds pino logger options from the shared API logging config.
|
|
* @param configService - Nest ConfigService dependency.
|
|
* @returns LoggerModule options.
|
|
*/
|
|
useFactory: (configService: ConfigService) =>
|
|
createPinoLoggerParams(configService),
|
|
}),
|
|
RedisModule.forRootAsync({
|
|
imports: [ConfigModule],
|
|
inject: [ConfigService],
|
|
/**
|
|
* Builds the Gateway Redis module options.
|
|
* @param configService - Nest ConfigService dependency.
|
|
* @returns @nestjs-modules/ioredis single-connection options.
|
|
*/
|
|
useFactory: (configService: ConfigService) => {
|
|
const config = new NapcatWebuiGatewayConfigService(configService);
|
|
return {
|
|
type: 'single' as const,
|
|
url: config.redisUrl(),
|
|
};
|
|
},
|
|
}),
|
|
],
|
|
controllers: [InternalSessionController],
|
|
providers: [
|
|
NapcatWebuiGatewayConfigService,
|
|
NapcatWebuiGatewaySessionService,
|
|
NapcatWebuiGatewayRedisStore,
|
|
NapcatWebuiGatewayTicketService,
|
|
{
|
|
provide: NAPCAT_WEBUI_GATEWAY_SESSION_STORE,
|
|
useExisting: NapcatWebuiGatewayRedisStore,
|
|
},
|
|
],
|
|
})
|
|
export class NapcatWebuiGatewayModule {}
|