data-api-builder
data-api-builder copied to clipboard
[Bug]: Fragments not supported with any of Connection fields such as items or pagination
What happened?
Using fragments for the cursor fields results in error.
{
books (first: 2) {
items {
id
publisher_id
}
...cursorFields
}
}
fragment cursorFields on BooksConnection {
hasNextPage
endCursor
}
Error thrown
{
"errors": [
{
"message": "Unable to cast object of type 'HotChocolate.Language.FragmentSpreadNode' to type 'HotChocolate.Language.FieldNode'.",
"locations": [
{
"line": 2,
"column": 5
}
],
"path": [
"books"
],
"extensions": {
"exception": {
"message": "Unable to cast object of type 'HotChocolate.Language.FragmentSpreadNode' to type 'HotChocolate.Language.FieldNode'.",
"stackTrace": " at Azure.DataApiBuilder.Core.Resolvers.SqlQueryStructure.ProcessPaginationFields(IReadOnlyList`1 paginationSelections) in Q:\\Repos\\data-api-builder\\src\\Core\\Resolvers\\Sql Query Structures\\SqlQueryStructure.cs:line 703\r\n at Azure.DataApiBuilder.Core.Resolvers.SqlQueryStructure..ctor(IMiddlewareContext ctx, IDictionary`2 queryParams, ISqlMetadataProvider sqlMetadataProvider, IAuthorizationResolver authorizationResolver, ObjectField schemaField, FieldNode queryField, IncrementingInteger counter, RuntimeConfigProvider runtimeConfigProvider, GQLFilterParser gQLFilterParser, String entityName) in Q:\\Repos\\data-api-builder\\src\\Core\\Resolvers\\Sql Query Structures\\SqlQueryStructure.cs:line 420\r\n at Azure.DataApiBuilder.Core.Resolvers.SqlQueryStructure..ctor(IMiddlewareContext ctx, IDictionary`2 queryParams, ISqlMetadataProvider sqlMetadataProvider, IAuthorizationResolver authorizationResolver, RuntimeConfigProvider runtimeConfigProvider, GQLFilterParser gQLFilterParser) in Q:\\Repos\\data-api-builder\\src\\Core\\Resolvers\\Sql Query Structures\\SqlQueryStructure.cs:line 124\r\n at Azure.DataApiBuilder.Core.Resolvers.SqlQueryEngine.ExecuteAsync(IMiddlewareContext context, IDictionary`2 parameters, String dataSourceName) in Q:\\Repos\\data-api-builder\\src\\Core\\Resolvers\\SqlQueryEngine.cs:line 74\r\n at Azure.DataApiBuilder.Service.Services.ExecutionHelper.ExecuteQueryAsync(IMiddlewareContext context) in Q:\\Repos\\data-api-builder\\src\\Core\\Services\\ExecutionHelper.cs:line 89\r\n at ResolverTypeInterceptor.<>c__DisplayClass8_1.<<-ctor>b__2>d.MoveNext() in Q:\\Repos\\data-api-builder\\src\\Core\\Services\\ResolverTypeInterceptor.cs:line 28\r\n--- End of stack trace from previous location ---\r\n at HotChocolate.Authorization.AuthorizeMiddleware.InvokeAsync(IMiddlewareContext context)\r\n at HotChocolate.Authorization.AuthorizeDirectiveType.<>c__DisplayClass3_0.<<CreateMiddleware>b__1>d.MoveNext()\r\n--- End of stack trace from previous location ---\r\n at HotChocolate.Execution.Processing.Tasks.ResolverTask.ExecuteResolverPipelineAsync(CancellationToken cancellationToken)\r\n at HotChocolate.Execution.Processing.Tasks.ResolverTask.TryExecuteAsync(CancellationToken cancellationToken)"
}
}
}
],
"data": null
}
It also doesnt work with sample query like below
{
books (first: 2) {
...cursorFields
}
}
fragment cursorFields on BooksConnection {
items {
id
publisher_id
}
}
Version
1.5.56
What database are you using?
Azure SQL
What hosting model are you using?
No response
Which API approach are you accessing DAB through?
No response
Relevant log output
Code of Conduct
- [x] I agree to follow this project's Code of Conduct