48 lines
1.4 KiB
TypeScript
48 lines
1.4 KiB
TypeScript
import { Module, Provider } from '@nestjs/common';
|
|
import { CqrsModule } from '@nestjs/cqrs';
|
|
import {
|
|
DIRECTION_ENCODER,
|
|
GEODESIC,
|
|
GEOROUTER,
|
|
PARAMS_PROVIDER,
|
|
} from './geography.di-tokens';
|
|
import { DefaultParamsProvider } from './infrastructure/default-params-provider';
|
|
import { PostgresDirectionEncoder } from './infrastructure/postgres-direction-encoder';
|
|
import { GetBasicRouteController } from './interface/controllers/get-basic-route.controller';
|
|
import { RouteMapper } from './route.mapper';
|
|
import { Geodesic } from './infrastructure/geodesic';
|
|
import { GraphhopperGeorouter } from './infrastructure/graphhopper-georouter';
|
|
import { HttpModule } from '@nestjs/axios';
|
|
import { GetRouteQueryHandler } from './core/application/queries/get-route/get-route.query-handler';
|
|
|
|
const queryHandlers: Provider[] = [GetRouteQueryHandler];
|
|
|
|
const mappers: Provider[] = [RouteMapper];
|
|
|
|
const adapters: Provider[] = [
|
|
{
|
|
provide: PARAMS_PROVIDER,
|
|
useClass: DefaultParamsProvider,
|
|
},
|
|
{
|
|
provide: DIRECTION_ENCODER,
|
|
useClass: PostgresDirectionEncoder,
|
|
},
|
|
{
|
|
provide: GEOROUTER,
|
|
useClass: GraphhopperGeorouter,
|
|
},
|
|
{
|
|
provide: GEODESIC,
|
|
useClass: Geodesic,
|
|
},
|
|
GetBasicRouteController,
|
|
];
|
|
|
|
@Module({
|
|
imports: [CqrsModule, HttpModule],
|
|
providers: [...queryHandlers, ...mappers, ...adapters],
|
|
exports: [RouteMapper, DIRECTION_ENCODER, GetBasicRouteController],
|
|
})
|
|
export class GeographyModule {}
|