Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Maps] Onboarding @azure-rest/maps-route #23588

Merged
merged 361 commits into from
Oct 26, 2022

Conversation

andykao1213
Copy link
Member

Packages impacted by this PR

  • @azure-rest/maps-route

Issues associated with this PR

Describe the problem that is addressed by this PR

Implement the RLC version of the maps-route, and deprecate the HLC one.

What are the possible designs available to address the problem? If there are more than one possible design, why was the one in this PR chosen?

  • NA

Are there test cases added in this PR? (If not, why?)

  • Yes. Please referto sdk/maps/maps-route-rest/test/

Provide a list of related PRs (if any)

Command used to generate this PR:**(Applicable only to SDK release request PRs)

Checklists

  • Added impacted package name to the issue description
  • Does this PR needs any fixes in the SDK Generator?** (If so, create an Issue in the Autorest/typescript repository and link it here)
  • Added a changelog (if necessary)

Charlie Chen and others added 30 commits September 6, 2022 02:54
We provide a `beginGet*Batch` method to resume the previous
request previously. This is not ideal because it need to get a
`batchId` which is store in the internal state of the LRO. Once
the LRO brings changes, our code will be broken.

We can achieve the same thing by using serialized state.
This change aims to leverage this approach and create convenience
methods `resume*Batch` for users
Also remove the `toLatLon` function since creating a tuple
is quite easy.
Specifying `coordinates` and `countryCodeFilter` can narrow the results
of the fuzzy search. But considring the case like searching "Australia",
theese fields may have no use. We decided to make them optional so user
can decides if they want to narrow down the results or not.
Following the keyvault-common, removing CHANGELOGs
from maps-common since it's not published.

const routeDirectionsPoller1 = getLongRunningPoller(client, routeDirectionBatchInitRes1);
/* We can get a partial of the results first */
await routeDirectionsPoller1.poll();
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this a common scenario, that customers will check partial results? Or do you mostly expect them to wait until the whole operation is complete?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not quite sure. I wrote the sample to demonstrate that the SDK can do so. Will you suggest removing this part if checking partial requests is not a common scenario?

Copy link
Member

@joheredi joheredi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Very good job! Thanks for spending the time to craft your samples. I left a few minor comments on the samples. And one question on the helpers, I don't see anything blocking so I'm approving.

@dubiety
Copy link
Member

dubiety commented Oct 23, 2022

Please also help to remove tenantId, testApplicationId, and testApplicationSecret in test-resources.json since they're not referenced.

@andykao1213 andykao1213 enabled auto-merge (squash) October 26, 2022 06:00
@andykao1213 andykao1213 merged commit ad48f52 into Azure:main Oct 26, 2022
@andykao1213 andykao1213 deleted the maps/onboarding-maps-route-RLC branch October 27, 2022 02:21
mpodwysocki pushed a commit that referenced this pull request Nov 2, 2022
* Update maps dependency in pnpm-lock.yaml

* Fix sample metadata errors

* Fix linting errors

* Fix linting errors

* Fix run time error

* Update package.json in samples folder

* Fix linting errors

* Fix linting errors

* Add changelog for maps-common

* Update recording files for maps-search

* Add test.yml for maps-search

* Add tests.yml for render and route

* Update tests.yml

* Update test-resources.json for maps

* Fix tests.yml format error

* Update env vars and remove unused export var

* Remove unused code

* Fix lock file

* Remove route & render

* Replace `beginGet*Batch` with `resume*Batch`

We provide a `beginGet*Batch` method to resume the previous
request previously. This is not ideal because it need to get a
`batchId` which is store in the internal state of the LRO. Once
the LRO brings changes, our code will be broken.

We can achieve the same thing by using serialized state.
This change aims to leverage this approach and create convenience
methods `resume*Batch` for users

* Update recording

* Make the endpoint of `MapsSearchClient` configurable

* Change LatLon from an interface to a tuple

Also remove the `toLatLon` function since creating a tuple
is quite easy.

* Make the props `coordinates` and `countryCodeFilter` optional

Specifying `coordinates` and `countryCodeFilter` can narrow the results
of the fuzzy search. But considring the case like searching "Australia",
theese fields may have no use. We decided to make them optional so user
can decides if they want to narrow down the results or not.

* fixup! Remove route & render

* Adjust CHANGELOGs of maps-search & common

Following the keyvault-common, removing CHANGELOGs
from maps-common since it's not published.

* Update samples

* Add batchRequest sample

* Add a new sample searchAddressResult

* Update search.ts and its examples

* enhance code example in README.md

* comment unused import

* Update recording for maps-search

* remove redundant recording files

* Add maps-search

* Rename LatLong to LatLon

* Fix constructor Readme doc

* Update readme to new signature

* Add tests partially

* Change LatLon/BoundingBox to interfaces

* Reduce the number of constructor overloading

* Rename SearchClient as MapsSearchClient

* Add options mapper tests

* Add result type mapper tests (in progress)

* rename clientId to mapsAccountClientId

* listPolygons -> getPolygons

* getPointOfInterestCategoryTree -> getPointOfInterestCategories

* Expose missing model

* Add alternative input file for quick experiment

* Regenerate code and make changes accordingly

* Reduce number of overloads of fuzzy searches

* Add geojson types

* Adopting new geojson definitions

* Change test specs to align with new method names

* clean up models and tsconfig

* Expose Known* models

* Remove batch sync methods

* Add public tests (non-batch)

* move model

* Add docstrings

* Start polling in begin* method

* Refactor BatchPoller for retrieving batchId

* Finalize batch pollers

* Readd batch methods

* Update generated code

* Finalize batch signature

* Rebuild samples & clean up

* Add AAD tests

* Clean up Swagger readme

* Fix spelling

* Add initial files for @azure/maps-route module

* maps-search: change comments and perform formatting

* Methods options and testing skeleton for maps-route

* maps-search: refactor options

* Improve convenience layer for non-LRO methods

* Change variable names

* Complete batch methods

* update maps-search Readme

* Update maps-route Readme

* Add generated samples for maps-route

* Update samples for maps-search

* Delete backup file

* Add maps-common module

* Update maps-route/maps-search to use maps-common

* maps-render: first draft

* Use LatLon/BoundingBox from maps-common

* Complete maps-render with tests

* Expose required types from maps-route

* Expose required types from maps-search

* Complete unit tests for maps-render

* Update maps-render README

* Update samples

* Fix comment/strings

* Fix comment/strings

* Update Route comment/interface

* Regenerate code

* Update files

* Define required fields and fix code

* Remove non-poller batch methods

* Fix playback test failure

* Rename parts of model names

* Rename remaining parts of models according to review feedback

* Remove TODO comments

* Update Reamdme transform to reflect latest swagger

* Change key policy name

* Simplify batch item error model

* Add brower tests

* Turn maps-common into internal module

* Rearrange Readme

* Rewrite Readme for common

* Remove batch-sync methods

* Route required fields: part 1

* Route required fields: part 2

* Add AAD back

* Route model fixes #1

* Route model fixes #2 + geojson named tuples

* Refine geojson types

* Aliased a few method options

* maps-render required fields part 1

* Do not validate budget parameters

* Revert "Do not validate budget parameters"

This reverts commit 4ec3f5f.

* Rename MapTileset to TileJson

* Render: model rename & type improvement

* Explicitly transform image range

* Fix route record tests

* Update map account creation commands in Readme

* Update Readme/docstrings/samples for Search/Route/Render

* Remove rollup and use dev-tool instead

* Remove some empty tests

* Add AAD test case and make file name shorter

* Update test cases

* Update cspell rules

* Update recording files

* Simplify test cases

* Sync cspell.json from upstream

* Use test-recorder 2.0 and update unit test cases

* Push wrong browsers recording files

* Update settings to support recording

* Fix dependency errors

* Upgrade api-recorder and fix errors

* Code refinement

* Update maps search recording files

* Update karma.conf.js format

* Update recording files and settings

* Fix broken links

* Update maps dependency in pnpm-lock.yaml

* Fix sample metadata errors

* Fix linting errors

* Fix linting errors

* Fix run time error

* Update package.json in samples folder

* Fix linting errors

* Fix linting errors

* Add changelog for maps-common

* Update recording files for maps-search

* Add test.yml for maps-search

* Add tests.yml for render and route

* Update tests.yml

* Update test-resources.json for maps

* Fix tests.yml format error

* Update env vars and remove unused export var

* Remove unused code

* Fix lock file

* Remove maps-render

* fixup! Change LatLon from an interface to a tuple

* Comment the future doc link

* Update doc & fix type issue

* fix lint issues

* Regenerate API View

* Comment the whole [apiref] since the original syntax cannot pass the Analyze/Link verification

* Fix issue related to the change of maps-common

- Replace beginGet*Result with resume* methods
- Turn LatLon to a tuple
- Add mapper to transform the string to Date because resume* method will
return a serialized Date

* Update test recording

* Remove maps-common from the Artifacts

* remove unused dependencies

* Add impression in README so we can track the page views

* Remove `AZURE_LOG_LEVEL` in test.yml

* Update samples

- Move the option parameter to the right place
- Add comments & "break" for handling the type of the search result to make it clear for the user

* Patch {} to properties for GeoJsonPolygon

* rename maxDetourTime to maxDetourTimeInSeconds

* Update recordings

* Remove any

* Rename to detourTimeInSeconds to align the convention

* Change the test.yml EnvVar

See more explanation here:
- #23039 (comment)
- #23039 (comment)

* Rename numResults to numberResults

* Add document comment

* Add endpoint options to MapsRouteClient

* Remove unused dependencies in maps-route

* fixup! Change the test.yml EnvVar

* Update interfaces & documents

* Update changelog

* Merge getRouteDirection with the additional parameter one

* Update samples

* Make the `maps-common to a published package

* Update the import of `maps-common` in `maps-search`

* Fix CI Issue

* Add documents for geojson

* Update the samples & readme

* Leverage maps-common package in mpas-route

* chore update

- Remove the unnecessary rule setting of eslint
- Update the legacy type path

* Remove unnecessary eslint config

* WIP: Remove LRO generation

* WIP: refactor mapsRouteClient

* WIP: first generation

* Format the generated code

* Support AAD

* Transform the model name

* Add helper functions

* Add a sample - route.ts

* Add samples for lro

* Add test

* Generate samples

* Add api view

* Update the generation

* WIP: ReadMe

* Rename "computeBestOrder" to "computeBestWaypointOrder"

* Refine README

* Rename model

* Add test createRouteDirectionsBatchRequest

* Fix lint issue

* Add missing metadata

* Remove maps-route/

* Update CI issue

* Fix merged issue

* Update version rule for maps-common

* Update CI name

* Remove extra lint config

* Use `require` in the README for consistency

* Regenerate the samples

* Remove redundant recording files

* Remove unused parameters in test-resources.json

* Refine readme snippet

* Log something specific for the result

* Update samples

* Split the route.ts into 3

* Remove model rename

* Use default export for RLC factory function

Co-authored-by: Charlie Chen <[email protected]>
Co-authored-by: Charlie Chen <[email protected]>
Co-authored-by: --global <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants