From 7ac8932e2ee0139e3e7c26c913c40c2a70741c8b Mon Sep 17 00:00:00 2001 From: alankashiwa Date: Thu, 30 Jun 2022 09:40:51 +0800 Subject: [PATCH] Route model fixes #1 --- sdk/maps/maps-route/review/maps-route.api.md | 28 +++---- .../maps-route/src/generated/models/index.ts | 20 +---- .../src/generated/models/mappers.ts | 3 +- sdk/maps/maps-route/src/models/models.ts | 1 - sdk/maps/maps-route/src/models/options.ts | 74 +++++++++---------- sdk/maps/maps-route/swagger/README.md | 17 +++++ 6 files changed, 68 insertions(+), 75 deletions(-) diff --git a/sdk/maps/maps-route/review/maps-route.api.md b/sdk/maps/maps-route/review/maps-route.api.md index f0f03a15293e..ba96decb5e93 100644 --- a/sdk/maps/maps-route/review/maps-route.api.md +++ b/sdk/maps/maps-route/review/maps-route.api.md @@ -56,7 +56,7 @@ export type ComputeTravelTime = string; export type DelayMagnitude = string; // @public -export type DrivingSide = string; +export type DrivingSide = "LEFT" | "RIGHT"; // @public export interface EffectiveSetting { @@ -181,12 +181,6 @@ export enum KnownDelayMagnitude { Unknown = "0" } -// @public -export enum KnownDrivingSide { - Left = "LEFT", - Right = "RIGHT" -} - // @public export enum KnownGuidanceInstructionType { DirectionInfo = "DIRECTION_INFO", @@ -421,11 +415,6 @@ export type RequireAtLeastOne = { [K in keyof T]-?: Required> & Partial>>; }[keyof T]; -// @public -export type RequireOnlyOne = { - [K in keyof T]-?: Required> & Partial, undefined>>; -}[keyof T]; - // @public export type ResponseSectionType = string; @@ -625,12 +614,15 @@ export interface RouteRange { } // @public -export type RouteRangeBudget = RequireOnlyOne<{ - fuelBudgetInLiters?: number; - energyBudgetInKwH?: number; - timeBudgetInSec?: number; - distanceBudgetInMeters?: number; -}>; +export type RouteRangeBudget = { + fuelBudgetInLiters: number; +} | { + energyBudgetInKwH: number; +} | { + timeBudgetInSec: number; +} | { + distanceBudgetInMeters: number; +}; // @public export type RouteRangeOptions = RouteBaseOptions & OperationOptions; diff --git a/sdk/maps/maps-route/src/generated/models/index.ts b/sdk/maps/maps-route/src/generated/models/index.ts index 4ad4b06d1d95..7aa33ce5ca06 100644 --- a/sdk/maps/maps-route/src/generated/models/index.ts +++ b/sdk/maps/maps-route/src/generated/models/index.ts @@ -1300,24 +1300,6 @@ export enum KnownJunctionType { */ export type JunctionType = string; -/** Known values of {@link DrivingSide} that the service accepts. */ -export enum KnownDrivingSide { - /** Left side. */ - Left = "LEFT", - /** Right side. */ - Right = "RIGHT" -} - -/** - * Defines values for DrivingSide. \ - * {@link KnownDrivingSide} can be used interchangeably with DrivingSide, - * this enum contains the known values that the service supports. - * ### Known values supported by the service - * **LEFT**: Left side. \ - * **RIGHT**: Right side. - */ -export type DrivingSide = string; - /** Known values of {@link GuidanceManeuver} that the service accepts. */ export enum KnownGuidanceManeuver { /** You have arrived. */ @@ -1439,6 +1421,8 @@ export type GeoJsonObjectType = | "GeometryCollection" | "Feature" | "FeatureCollection"; +/** Defines values for DrivingSide. */ +export type DrivingSide = "LEFT" | "RIGHT"; /** Optional parameters. */ export interface RouteRequestRouteMatrixOptionalParams diff --git a/sdk/maps/maps-route/src/generated/models/mappers.ts b/sdk/maps/maps-route/src/generated/models/mappers.ts index 4ea940eff753..1b295e315ea6 100644 --- a/sdk/maps/maps-route/src/generated/models/mappers.ts +++ b/sdk/maps/maps-route/src/generated/models/mappers.ts @@ -702,7 +702,8 @@ export const RouteInstruction: coreClient.CompositeMapper = { serializedName: "drivingSide", readOnly: true, type: { - name: "String" + name: "Enum", + allowedValues: ["LEFT", "RIGHT"] } }, maneuver: { diff --git a/sdk/maps/maps-route/src/models/models.ts b/sdk/maps/maps-route/src/models/models.ts index 6cc182090989..190fd990ba43 100644 --- a/sdk/maps/maps-route/src/models/models.ts +++ b/sdk/maps/maps-route/src/models/models.ts @@ -92,7 +92,6 @@ export { KnownVehicleEngineType, KnownVehicleLoadType, KnownWindingnessLevel, - KnownDrivingSide, KnownGuidanceInstructionType, KnownGuidanceManeuver, KnownJunctionType, diff --git a/sdk/maps/maps-route/src/models/options.ts b/sdk/maps/maps-route/src/models/options.ts index 7cee1ee5c8bd..04aae9022437 100644 --- a/sdk/maps/maps-route/src/models/options.ts +++ b/sdk/maps/maps-route/src/models/options.ts @@ -286,46 +286,46 @@ export interface RouteDirectionsOptions extends RouteBaseOptions { report?: Report; } -/** - * RequireOnlyOne helps create a type where only one of the properties of an interface is required to exist. - */ -export type RequireOnlyOne = { - [K in keyof T]-?: Required> & Partial, undefined>>; -}[keyof T]; - /** * Budget for the route range request. One and only one budget must be provided. */ -export type RouteRangeBudget = RequireOnlyOne<{ - /** - * Fuel budget in liters that determines maximal range which can be travelled using the specified Combustion Consumption Model. - * When fuelBudgetInLiters is used, it is mandatory to specify a detailed Combustion Consumption Model. - * - * Exactly one budget (fuelBudgetInLiters, energyBudgetInKwH, timeBudgetInSec, or distanceBudgetInMeters) must be used. - */ - fuelBudgetInLiters?: number; - /** - * Electric energy budget in kilowatt hours (kWh) that determines maximal range which can be travelled using the specified Electric Consumption Model. - * When energyBudgetInkWh is used, it is mandatory to specify a detailed Electric Consumption Model. - * - * Exactly one budget (fuelBudgetInLiters, energyBudgetInKwH, timeBudgetInSec, or distanceBudgetInMeters) must be used. - */ - energyBudgetInKwH?: number; - /** - * Time budget in seconds that determines maximal range which can be travelled using driving time. - * The Consumption Model will only affect the range when routeType is eco. - * - * Exactly one budget (fuelBudgetInLiters, energyBudgetInKwH, timeBudgetInSec, or distanceBudgetInMeters) must be used. - */ - timeBudgetInSec?: number; - /** - * Distance budget in meters that determines maximal range which can be travelled using driving distance. - * The Consumption Model will only affect the range when routeType is eco. - * - * Exactly one budget (fuelBudgetInLiters, energyBudgetInKwH, timeBudgetInSec, or distanceBudgetInMeters) must be used. - */ - distanceBudgetInMeters?: number; -}>; +export type RouteRangeBudget = + | { + /** + * Fuel budget in liters that determines maximal range which can be travelled using the specified Combustion Consumption Model. + * When fuelBudgetInLiters is used, it is mandatory to specify a detailed Combustion Consumption Model. + * + * Exactly one budget (fuelBudgetInLiters, energyBudgetInKwH, timeBudgetInSec, or distanceBudgetInMeters) must be used. + */ + fuelBudgetInLiters: number; + } + | { + /** + * Electric energy budget in kilowatt hours (kWh) that determines maximal range which can be travelled using the specified Electric Consumption Model. + * When energyBudgetInkWh is used, it is mandatory to specify a detailed Electric Consumption Model. + * + * Exactly one budget (fuelBudgetInLiters, energyBudgetInKwH, timeBudgetInSec, or distanceBudgetInMeters) must be used. + */ + energyBudgetInKwH: number; + } + | { + /** + * Time budget in seconds that determines maximal range which can be travelled using driving time. + * The Consumption Model will only affect the range when routeType is eco. + * + * Exactly one budget (fuelBudgetInLiters, energyBudgetInKwH, timeBudgetInSec, or distanceBudgetInMeters) must be used. + */ + timeBudgetInSec: number; + } + | { + /** + * Distance budget in meters that determines maximal range which can be travelled using driving distance. + * The Consumption Model will only affect the range when routeType is eco. + * + * Exactly one budget (fuelBudgetInLiters, energyBudgetInKwH, timeBudgetInSec, or distanceBudgetInMeters) must be used. + */ + distanceBudgetInMeters: number; + }; /** Options for retrieving route range */ export type RouteRangeOptions = RouteBaseOptions & OperationOptions; diff --git a/sdk/maps/maps-route/swagger/README.md b/sdk/maps/maps-route/swagger/README.md index 2c16deb62691..634c1b18f3d1 100644 --- a/sdk/maps/maps-route/swagger/README.md +++ b/sdk/maps/maps-route/swagger/README.md @@ -253,4 +253,21 @@ directive: transform: > $ = { "$ref": "#/definitions/RouteSummary" }; - remove-model: RouteLegSummary + - from: swagger-document + where: $.definitions.RouteInstruction.properties.drivingSide + transform: > + $["x-ms-enum"] = { + "name": "DrivingSide", + "modelAsString": false, + "values": [ + { + "value": "LEFT", + "description": "Left side." + }, + { + "value": "RIGHT", + "description": "Right side." + } + ] + }; ```