introduce the runway definitions

This commit is contained in:
Sven Czarnian
2022-10-25 14:31:58 +02:00
parent 6378630027
commit cb9cd97c17
5 changed files with 73 additions and 1 deletions

View File

@@ -27,8 +27,10 @@ import { Waypoint } from '../generic/models/waypoint.model';
import { WaypointDto } from '../generic/dto/waypoint.dto';
import { Coordinate } from '../generic/models/coordinate.model';
import { CoordinateDto } from '../generic/dto/coordinate.dto';
import { WaypointConverter } from '../generic/converters';
import { CoordinateConverter, WaypointConverter } from '../generic/converters';
import { ActiveRunwaysDto } from './dto/activerunways.dto';
import { Runway } from './models/runway.model';
import { RunwayDto } from './dto/runway.dto';
@Controller('airport')
export class AirportController {
@@ -118,6 +120,17 @@ export class AirportController {
} as T;
}
private static convertRunways<T>(runways: Runway[] | RunwayDto[]): T[] {
const retval: T[] = [];
runways.forEach((runway) =>
retval.push({
identifier: runway.identifier,
threshold: CoordinateConverter.convert(runway.threshold),
} as T),
);
return retval;
}
private static airportToAirportDto(airport: Airport): AirportDto {
if (!airport) return null;
@@ -127,6 +140,7 @@ export class AirportController {
airport.location,
),
elevation: airport.elevation,
runways: AirportController.convertRunways(airport.runways),
upperConstraints: AirportController.convertConstraints<ConstraintDto>(
airport.upperConstraints,
),
@@ -156,6 +170,7 @@ export class AirportController {
airport.location,
),
elevation: airport.elevation,
runways: AirportController.convertRunways(airport.runways),
upperConstraints: AirportController.convertConstraints<Constraint>(
airport.upperConstraints,
),

View File

@@ -5,6 +5,7 @@ import { ArrivalRouteDto } from './arrivalroute.dto';
import { RunwaySpacingDto } from './runwayspacing.dto';
import { PlanningDto } from './planning.dto';
import { WaypointDto } from '../../generic/dto/waypoint.dto';
import { RunwayDto } from './runway.dto';
export class AirportDto {
@IsNotEmpty()
@@ -26,6 +27,12 @@ export class AirportDto {
})
elevation: number;
@IsNotEmpty()
@ApiProperty({
description: 'All possible arrival runways',
})
runways: RunwayDto[];
@IsOptional()
@ApiProperty({
description: 'The constraints in upper airspaces',

View File

@@ -0,0 +1,18 @@
import { IsNotEmpty } from 'class-validator';
import { ApiProperty } from '@nestjs/swagger';
import { CoordinateDto } from '../../generic/dto/coordinate.dto';
export class RunwayDto {
@IsNotEmpty()
@ApiProperty({
description: 'The identifier of the runway',
example: '25L',
})
identifier: string;
@IsNotEmpty()
@ApiProperty({
description: 'The runway threshold',
})
altitude: CoordinateDto;
}

View File

@@ -5,6 +5,7 @@ import { Constraint, ConstraintSchema } from './constraint.model';
import { Planning, PlanningSchema } from './planning.model';
import { RunwaySpacing, RunwaySpacingSchema } from './runwayspacing.model';
import { Waypoint } from '../../generic/models/waypoint.model';
import { Runway, RunwaySchema } from './runway.model';
export type AirportDocument = Airport & Document;
@@ -29,6 +30,12 @@ export class Airport {
})
elevation: number;
@Prop({
required: true,
type: [RunwaySchema],
})
runways: Runway[];
@Prop({
type: [ConstraintSchema],
})

View File

@@ -0,0 +1,25 @@
import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose';
import { Document } from 'mongoose';
import {
Coordinate,
CoordinateSchema,
} from '../../generic/models/coordinate.model';
export type RunwayDocument = Runway & Document;
@Schema()
export class Runway {
@Prop({
required: true,
type: String,
})
identifier: string;
@Prop({
required: true,
type: CoordinateSchema,
})
threshold: Coordinate;
}
export const RunwaySchema = SchemaFactory.createForClass(Runway);