ClientModel: Pageable abstractions for third-party clients#44026
Merged
annelo-msft merged 70 commits intoAzure:mainfrom May 16, 2024
Merged
ClientModel: Pageable abstractions for third-party clients#44026annelo-msft merged 70 commits intoAzure:mainfrom
annelo-msft merged 70 commits intoAzure:mainfrom
Conversation
…be replaced in a polling paradigm
…convenience implementation in a way that postpones sending the request
christothes
reviewed
May 15, 2024
jsquire
requested changes
May 16, 2024
Member
jsquire
left a comment
There was a problem hiding this comment.
The approach looks reasonable to me.
It's a shame that the sync/async types are different, but it makes sense if we're trying to align how you enumerate to the sync/async version of the operation that was called.
jsquire
approved these changes
May 16, 2024
Member
jsquire
left a comment
There was a problem hiding this comment.
Fixing review; request for changes was unintentional and due to a mis-click.
This was referenced May 16, 2024
This was referenced May 20, 2024
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Overview
System.ClientModel-based client's service methods need to be able to return collections of values from a paged collection, i.e. where subsets of collection elements are returned iteratively over one more calls to the service. TypeSpec is adding pagination support (see overview and microsoft/typespec#705) and in time our generators will generate third-party clients with such service methods from the TypeSpec.
What's in this PR
This PR adds sync and async abstractions for pageable result collections,
PageableCollection<T>andAsyncPageableCollection<T>, as well as aResultPage<T>type that exposes a continuation token and enables enumeration over the results in the page. It also adds a mock client that illustrates standard patterns for implementing these abstractions, as well as tests that illustrate standard usage patterns of the abstractions, e.g. for changing the size of the page requested from the service, and enumerating results using a page's continuation token.