-
Notifications
You must be signed in to change notification settings - Fork 39
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
Snippet generation should lead to use with url for next and skip tokens parameters in url #796
Comments
This appears to be a common thread throughout the SDK and the Graph Explorer code generator. Here is another example: `import ( headers := abstractions.NewRequestHeaders() requestParameters := &graphusers.UserItemMailFolderItemMessagesDeltaWithRequestBuilderGetQueryParameters{ delta, err := graphClient.Users().ByUserId("user-id").MailFolders().ByMailFolderId("mailFolder-id").Messages().Delta().GetAsDeltaGetResponse(context.Background(), configuration) As well as the similar results for deltatoken: `import ( requestParameters := &graphusers.UserItemMailFolderItemMessagesDeltaWithRequestBuilderGetQueryParameters{ delta, err := graphClient.Users().ByUserId("user-id").MailFolders().ByMailFolderId("mailFolder-id").Messages().Delta().GetAsDeltaGetResponse(context.Background(), configuration) They result in Go complaining that SkipToken and DeltaToken are undefined. |
Hi everyone, This is an issue with the code snippets generation logic, it needs to be special cased. Instead, the SDK allows using a raw URL to build the request like so: graphClient.Users().Delta().WithUrl("https://previousLink").GetAsDeltaGetResponse(context.Background(), configuration) You can also use the page iterator Let us know if you have any additional comments or questions. @rkodev to special case the snippet generation across languages in DevX API |
Hello! Thank you for your reply. I am using this example to iterate through the users, and I will change it to use the delta when resuming the list. I want to query my users every 5 minutes, so the function needs to return the delta for the next iteration. The problem is that both DeltaLink and NextLink are nil in the iterator. Can you please help? func GetAllUsers(graphClient *client.GraphClient, pageSize int32) {
// Set query parameters for the request
query := graphusers.DeltaRequestBuilderGetQueryParameters{
Select: []string{"displayName"}, // we only want to fetch the display name of users
Top: &pageSize,
}
// Set request configuration options
options := graphusers.DeltaRequestBuilderGetRequestConfiguration{
QueryParameters: &query,
}
// Fetch users from the Graph API
users, err := graphClient.GetClient().Users().Delta().Get(context.Background(), &options)
if err != nil {
log.Fatalf("failed to fetch users: %v", err)
}
// Initialize page iterator
pageIterator, err := graphcore.NewPageIterator[*graphmodels.User](
users,
graphClient.GetClient().GetAdapter(),
graphmodels.CreateUserCollectionResponseFromDiscriminatorValue) //CreateMessageCollectionResponseFromDiscriminatorValue)
if err != nil {
log.Fatalf("Error creating page iterator: %v\n", err)
}
// Add custom headers to the iterator
headers := abstractions.NewRequestHeaders()
headers.Add("Prefer", "outlook.body-content-type=\"text\"")
pageIterator.SetHeaders(headers)
// Iterate over all pages
err = pageIterator.Iterate(
context.Background(),
func(user *graphmodels.User) bool {
fmt.Printf("%s\n", *user.GetDisplayName())
// Return true to continue the iteration
return true
})
if err != nil {
log.Fatalf("Error iterating over messages: %v\n", err)
}
fmt.Println(pageIterator.GetOdataDeltaLink()) // returns nil
fmt.Println(pageIterator.GetOdataNextLink()) // returns nil
} Thank you! |
Thank you for the additional information. Can you pass |
Hello @baywet, Thank you for the suggestion. The CreateUsersDeltaGetResponseFromDiscriminatorValue is unavailable, at least in the models or users packages. I can only find it in education. |
Well, but it worked! import (
grapheducation "github.com/microsoftgraph/msgraph-sdk-go/education"
)
...
pageIterator, err := graphcore.NewPageIterator[*graphmodels.User](
users,
graphClient.GetClient().GetAdapter(),
//graphmodels.CreateUserCollectionResponseFromDiscriminatorValue) //CreateMessageCollectionResponseFromDiscriminatorValue)
grapheducation.CreateUsersDeltaGetResponseFromDiscriminatorValue)
if err != nil {
log.Fatalf("Error creating page iterator: %v\n", err)
} The Thank @baywet |
Describe the bug
I’m trying to query users with the Delta API in the Go SDK, but examples in Microsoft documentation don’t match available SDK entities.
Detailed Description:
From the Microsoft Delta Query Documentation:
In the SDK, UsersDeltaWithRequestBuilderGetQueryParameters isn’t available. The closest alternative, DeltaRequestBuilderGetQueryParameters, lacks a Skiptoken field:
Additional Attempt:
I tried direct request configuration using the following code, but without success:
Without access to Skiptoken or guidance on retrieving deltaToken, it’s challenging to perform delta queries effectively.
Expected behavior
The Go SDK should provide delta query support equivalent to the documentation examples, including options for Skiptoken and deltaToken handling. This would allow developers to correctly paginate through delta queries and manage state with each request, ensuring alignment with other Microsoft Graph SDKs.
How to reproduce
How to Reproduce:
SDK Version
1.51.0
Latest version known to work for scenario above?
No response
Known Workarounds
No response
Debug output
Click to expand log
```The text was updated successfully, but these errors were encountered: