70 lines
2.6 KiB
TypeScript
70 lines
2.6 KiB
TypeScript
import { RabbitMQModule } from '@golevelup/nestjs-rabbitmq';
|
|
import { RedisClientOptions } from '@liaoliaots/nestjs-redis';
|
|
import { CacheModule, Module } from '@nestjs/common';
|
|
import { ConfigModule, ConfigService } from '@nestjs/config';
|
|
import { CqrsModule } from '@nestjs/cqrs';
|
|
import { redisStore } from 'cache-manager-ioredis-yet';
|
|
import { DatabaseModule } from '../database/database.module';
|
|
import { TerritoriesController } from './adapters/primaries/territories.controller';
|
|
import { LoggingMessager } from './adapters/secondaries/logging.messager';
|
|
import { TerritoriesRepository } from './adapters/secondaries/territories.repository';
|
|
import { TerritoryMessager } from './adapters/secondaries/territory.messager';
|
|
import { CreateTerritoryUseCase } from './domain/usecases/create-territory.usecase';
|
|
import { DeleteTerritoryUseCase } from './domain/usecases/delete-territory.usecase';
|
|
import { FindAllTerritoriesForPointUseCase } from './domain/usecases/find-all-territories-for-point.usecase';
|
|
import { FindAllTerritoriesUseCase } from './domain/usecases/find-all-territories.usecase';
|
|
import { FindTerritoryByUuidUseCase } from './domain/usecases/find-territory-by-uuid.usecase';
|
|
import { UpdateTerritoryUseCase } from './domain/usecases/update-territory.usecase';
|
|
import { TerritoryProfile } from './mappers/territory.profile';
|
|
|
|
@Module({
|
|
imports: [
|
|
DatabaseModule,
|
|
CqrsModule,
|
|
RabbitMQModule.forRootAsync(RabbitMQModule, {
|
|
imports: [ConfigModule],
|
|
useFactory: async (configService: ConfigService) => ({
|
|
exchanges: [
|
|
{
|
|
name: 'territory',
|
|
type: 'topic',
|
|
},
|
|
{
|
|
name: 'logging',
|
|
type: 'topic',
|
|
},
|
|
],
|
|
uri: configService.get<string>('RMQ_URI'),
|
|
connectionInitOptions: { wait: false },
|
|
}),
|
|
inject: [ConfigService],
|
|
}),
|
|
CacheModule.registerAsync<RedisClientOptions>({
|
|
imports: [ConfigModule],
|
|
useFactory: async (configService: ConfigService) => ({
|
|
store: await redisStore({
|
|
host: configService.get<string>('REDIS_HOST'),
|
|
port: configService.get<number>('REDIS_PORT'),
|
|
ttl: configService.get('CACHE_TTL'),
|
|
}),
|
|
}),
|
|
inject: [ConfigService],
|
|
}),
|
|
],
|
|
controllers: [TerritoriesController],
|
|
providers: [
|
|
TerritoryProfile,
|
|
TerritoriesRepository,
|
|
TerritoryMessager,
|
|
LoggingMessager,
|
|
FindAllTerritoriesForPointUseCase,
|
|
FindAllTerritoriesUseCase,
|
|
FindTerritoryByUuidUseCase,
|
|
CreateTerritoryUseCase,
|
|
UpdateTerritoryUseCase,
|
|
DeleteTerritoryUseCase,
|
|
],
|
|
exports: [],
|
|
})
|
|
export class TerritoriesModule {}
|