110 lines
3.1 KiB
TypeScript
110 lines
3.1 KiB
TypeScript
import { Module, Provider } from '@nestjs/common';
|
|
import { CqrsModule } from '@nestjs/cqrs';
|
|
import {
|
|
AD_MESSAGE_PUBLISHER,
|
|
AD_REPOSITORY,
|
|
AD_DIRECTION_ENCODER,
|
|
AD_CARPOOL_ROUTE_PROVIDER,
|
|
AD_GET_BASIC_ROUTE_CONTROLLER,
|
|
PARAMS_PROVIDER,
|
|
TIMEZONE_FINDER,
|
|
TIME_CONVERTER,
|
|
INPUT_DATETIME_TRANSFORMER,
|
|
} from './ad.di-tokens';
|
|
import { MessageBrokerPublisher } from '@mobicoop/message-broker-module';
|
|
import { AdRepository } from './infrastructure/ad.repository';
|
|
import { PrismaService } from './infrastructure/prisma.service';
|
|
import { AdMapper } from './ad.mapper';
|
|
import { AdCreatedMessageHandler } from './interface/message-handlers/ad-created.message-handler';
|
|
import { PostgresDirectionEncoder } from '@modules/geography/infrastructure/postgres-direction-encoder';
|
|
import { GetBasicRouteController } from '@modules/geography/interface/controllers/get-basic-route.controller';
|
|
import { CarpoolRouteProvider } from './infrastructure/carpool-route-provider';
|
|
import { GeographyModule } from '@modules/geography/geography.module';
|
|
import { CreateAdService } from './core/application/commands/create-ad/create-ad.service';
|
|
import { MatchGrpcController } from './interface/grpc-controllers/match.grpc-controller';
|
|
import { MatchQueryHandler } from './core/application/queries/match/match.query-handler';
|
|
import { DefaultParamsProvider } from './infrastructure/default-params-provider';
|
|
import { TimezoneFinder } from './infrastructure/timezone-finder';
|
|
import { TimeConverter } from './infrastructure/time-converter';
|
|
import { InputDateTimeTransformer } from './infrastructure/input-datetime-transformer';
|
|
|
|
const grpcControllers = [MatchGrpcController];
|
|
|
|
const messageHandlers = [AdCreatedMessageHandler];
|
|
|
|
const commandHandlers: Provider[] = [CreateAdService];
|
|
|
|
const queryHandlers: Provider[] = [MatchQueryHandler];
|
|
|
|
const mappers: Provider[] = [AdMapper];
|
|
|
|
const repositories: Provider[] = [
|
|
{
|
|
provide: AD_REPOSITORY,
|
|
useClass: AdRepository,
|
|
},
|
|
];
|
|
|
|
const messagePublishers: Provider[] = [
|
|
{
|
|
provide: AD_MESSAGE_PUBLISHER,
|
|
useExisting: MessageBrokerPublisher,
|
|
},
|
|
];
|
|
|
|
const orms: Provider[] = [PrismaService];
|
|
|
|
const adapters: Provider[] = [
|
|
{
|
|
provide: AD_DIRECTION_ENCODER,
|
|
useClass: PostgresDirectionEncoder,
|
|
},
|
|
{
|
|
provide: AD_CARPOOL_ROUTE_PROVIDER,
|
|
useClass: CarpoolRouteProvider,
|
|
},
|
|
{
|
|
provide: AD_GET_BASIC_ROUTE_CONTROLLER,
|
|
useClass: GetBasicRouteController,
|
|
},
|
|
{
|
|
provide: PARAMS_PROVIDER,
|
|
useClass: DefaultParamsProvider,
|
|
},
|
|
{
|
|
provide: TIMEZONE_FINDER,
|
|
useClass: TimezoneFinder,
|
|
},
|
|
{
|
|
provide: TIME_CONVERTER,
|
|
useClass: TimeConverter,
|
|
},
|
|
{
|
|
provide: INPUT_DATETIME_TRANSFORMER,
|
|
useClass: InputDateTimeTransformer,
|
|
},
|
|
];
|
|
|
|
@Module({
|
|
imports: [CqrsModule, GeographyModule],
|
|
controllers: [...grpcControllers],
|
|
providers: [
|
|
...messageHandlers,
|
|
...commandHandlers,
|
|
...queryHandlers,
|
|
...mappers,
|
|
...repositories,
|
|
...messagePublishers,
|
|
...orms,
|
|
...adapters,
|
|
],
|
|
exports: [
|
|
PrismaService,
|
|
AdMapper,
|
|
AD_REPOSITORY,
|
|
AD_DIRECTION_ENCODER,
|
|
AD_MESSAGE_PUBLISHER,
|
|
],
|
|
})
|
|
export class AdModule {}
|