import { QueryBus } from '@nestjs/cqrs'; import { RouteResponseDto } from '../dtos/route.response.dto'; import { GetRouteRequestDto } from './dtos/get-route.request.dto'; import { RouteEntity } from '@modules/geography/core/domain/route.entity'; import { GetRouteQuery } from '@modules/geography/core/application/queries/get-route/get-route.query'; import { RouteMapper } from '@modules/geography/route.mapper'; import { Controller } from '@nestjs/common'; import { GetRouteControllerPort } from '@modules/geography/core/application/ports/get-route-controller.port'; @Controller() export class GetBasicRouteController implements GetRouteControllerPort { constructor( private readonly queryBus: QueryBus, private readonly mapper: RouteMapper, ) {} async get(data: GetRouteRequestDto): Promise { const route: RouteEntity = await this.queryBus.execute( new GetRouteQuery(data.waypoints), ); return this.mapper.toResponse(route); } }