diff --git a/src/airport/airport.controller.ts b/src/airport/airport.controller.ts index e696c07..d99ea8b 100644 --- a/src/airport/airport.controller.ts +++ b/src/airport/airport.controller.ts @@ -22,10 +22,11 @@ import { Assignment } from './models/assignment.model'; import { Constraint } from './models/constraint.model'; import { Planning } from './models/planning.model'; import { RunwaySpacing } from './models/runwayspacing.model'; -import { Waypoint } from '../models/waypoint.model'; -import { WaypointDto } from '../dto/waypoint.dto'; -import { Coordinate } from 'src/models/coordinate.model'; -import { CoordinateDto } from 'src/dto/coordinate.dto'; +import { Waypoint } from '../generic/models/waypoint.model'; +import { WaypointDto } from '../generic/dto/waypoint.dto'; +import { Coordinate } from 'src/generic/models/coordinate.model'; +import { CoordinateDto } from 'src/generic/dto/coordinate.dto'; +import { WaypointConverter } from 'src/generic/converters'; @Controller('airport') export class AirportController { @@ -57,32 +58,6 @@ export class AirportController { return retval; } - private static convertCoordinate( - coordinate: Coordinate | CoordinateDto, - ): T { - return { - latitude: coordinate.latitude, - longitude: coordinate.longitude, - } as T; - } - - private static convertWaypoint(waypoint: Waypoint | WaypointDto): T { - return { - identifier: waypoint.identifier, - coordinate: AirportController.convertCoordinate(waypoint.coordinate), - } as T; - } - - private static convertWaypoints( - waypoints: Waypoint[] | WaypointDto[], - ): T[] { - const retval: T[] = []; - waypoints.forEach((waypoint) => - retval.push(AirportController.convertWaypoint(waypoint)), - ); - return retval; - } - private static convertArrivalRoutes( routes: ArrivalRoute[] | ArrivalRouteDto[], ): T[] { @@ -91,7 +66,7 @@ export class AirportController { retval.push({ arrival: route.runway, runway: route.runway, - waypoints: AirportController.convertWaypoints(route.waypoints), + waypoints: WaypointConverter.convertList(route.waypoints), constraints: AirportController.convertConstraints(route.constraints), } as T), ); @@ -146,7 +121,7 @@ export class AirportController { return { icao: airport.icao, - location: AirportController.convertWaypoint( + location: WaypointConverter.convert( airport.location, ), elevation: airport.elevation, @@ -173,7 +148,7 @@ export class AirportController { return { icao: airport.icao, - location: AirportController.convertWaypoint( + location: WaypointConverter.convert( airport.location, ), elevation: airport.elevation, diff --git a/src/airport/dto/airport.dto.ts b/src/airport/dto/airport.dto.ts index 2815a55..6c4f18e 100644 --- a/src/airport/dto/airport.dto.ts +++ b/src/airport/dto/airport.dto.ts @@ -4,7 +4,7 @@ import { ConstraintDto } from './constraint.dto'; import { ArrivalRouteDto } from './arrivalroute.dto'; import { RunwaySpacingDto } from './runwayspacing.dto'; import { PlanningDto } from './planning.dto'; -import { WaypointDto } from '../../dto/waypoint.dto'; +import { WaypointDto } from '../../generic/dto/waypoint.dto'; export class AirportDto { @IsNotEmpty() diff --git a/src/airport/dto/arrivalroute.dto.ts b/src/airport/dto/arrivalroute.dto.ts index f8a997e..641deea 100644 --- a/src/airport/dto/arrivalroute.dto.ts +++ b/src/airport/dto/arrivalroute.dto.ts @@ -1,7 +1,7 @@ import { IsNotEmpty, IsOptional } from 'class-validator'; import { ApiProperty } from '@nestjs/swagger'; import { ConstraintDto } from './constraint.dto'; -import { WaypointDto } from '../../dto/waypoint.dto'; +import { WaypointDto } from '../../generic/dto/waypoint.dto'; export class ArrivalRouteDto { @IsNotEmpty() diff --git a/src/airport/models/airport.model.ts b/src/airport/models/airport.model.ts index 05b4126..0f48d9b 100644 --- a/src/airport/models/airport.model.ts +++ b/src/airport/models/airport.model.ts @@ -4,7 +4,7 @@ import { ArrivalRoute, ArrivalRouteSchema } from './arrivalroute.model'; import { Constraint, ConstraintSchema } from './constraint.model'; import { Planning, PlanningSchema } from './planning.model'; import { RunwaySpacing, RunwaySpacingSchema } from './runwayspacing.model'; -import { Waypoint } from '../../models/waypoint.model'; +import { Waypoint } from '../../generic/models/waypoint.model'; export type AirportDocument = Airport & Document; diff --git a/src/airport/models/arrivalroute.model.ts b/src/airport/models/arrivalroute.model.ts index 559f2ca..7425e2c 100644 --- a/src/airport/models/arrivalroute.model.ts +++ b/src/airport/models/arrivalroute.model.ts @@ -1,7 +1,7 @@ import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose'; import { Document } from 'mongoose'; import { Constraint, ConstraintSchema } from './constraint.model'; -import { Waypoint, WaypointSchema } from '../../models/waypoint.model'; +import { Waypoint, WaypointSchema } from '../../generic/models/waypoint.model'; export type ArrivalRouteDocument = ArrivalRoute & Document; diff --git a/src/generic/converters/coordinate.ts b/src/generic/converters/coordinate.ts new file mode 100644 index 0000000..dcd6679 --- /dev/null +++ b/src/generic/converters/coordinate.ts @@ -0,0 +1,11 @@ +import { CoordinateDto } from '../dto/coordinate.dto'; +import { Coordinate } from '../models/coordinate.model'; + +export class CoordinateConverter { + static convert(coordinate: Coordinate | CoordinateDto): T { + return { + latitude: coordinate.latitude, + longitude: coordinate.longitude, + } as T; + } +} diff --git a/src/generic/converters/index.ts b/src/generic/converters/index.ts new file mode 100644 index 0000000..17ba026 --- /dev/null +++ b/src/generic/converters/index.ts @@ -0,0 +1,4 @@ +import { CoordinateConverter } from './coordinate'; +import { WaypointConverter } from './waypoint'; + +export { CoordinateConverter, WaypointConverter }; diff --git a/src/generic/converters/waypoint.ts b/src/generic/converters/waypoint.ts new file mode 100644 index 0000000..d4e5550 --- /dev/null +++ b/src/generic/converters/waypoint.ts @@ -0,0 +1,20 @@ +import { WaypointDto } from '../dto/waypoint.dto'; +import { Waypoint } from '../models/waypoint.model'; +import { CoordinateConverter } from './coordinate'; + +export class WaypointConverter { + static convert(waypoint: Waypoint | WaypointDto): T { + return { + identifier: waypoint.identifier, + coordinate: CoordinateConverter.convert(waypoint.coordinate), + } as T; + } + + static convertList(waypoints: Waypoint[] | WaypointDto[]): T[] { + const retval: T[] = []; + waypoints.forEach((waypoint) => + retval.push(WaypointConverter.convert(waypoint)), + ); + return retval; + } +} \ No newline at end of file diff --git a/src/dto/coordinate.dto.ts b/src/generic/dto/coordinate.dto.ts similarity index 100% rename from src/dto/coordinate.dto.ts rename to src/generic/dto/coordinate.dto.ts diff --git a/src/dto/waypoint.dto.ts b/src/generic/dto/waypoint.dto.ts similarity index 100% rename from src/dto/waypoint.dto.ts rename to src/generic/dto/waypoint.dto.ts diff --git a/src/models/coordinate.model.ts b/src/generic/models/coordinate.model.ts similarity index 100% rename from src/models/coordinate.model.ts rename to src/generic/models/coordinate.model.ts diff --git a/src/models/waypoint.model.ts b/src/generic/models/waypoint.model.ts similarity index 100% rename from src/models/waypoint.model.ts rename to src/generic/models/waypoint.model.ts