Can we consider extending the nullability spec to allow applying the @catch to an interface type, and have it apply to all fields in that operation which implement that interface? Maybe using schema extensions if that's a better fit.
Here's an example of what our schema looks like:
interface PageRow {
entitiesConnection: RowEntitiesConnection
}
interface RowEntitiesConnection {
edges: RowEntitiesEdge
}
interface RowEntitiesEdge {
index: Int
node: RowEntity # this is also an interface
}
type VideoRow implements PageRow {
entitiesConnection: VideoRowEntitiesConnection
edges: VideoRowEntitiesEdge
}
type VideoRowEntitiesEdge implements RowEntitiesEdge {
index: Int
node: VideoEntity
}
## Imagine similar types for, say, `GamesRow`, `GamesRowEntitiesEdge` and `GameEntity`.
And then in our operations, we use spreads to
fragment RowData on PageRow {
...GenericRow
...VideoRow
...GameRow
}
fragment GenericRow on PageRow {
## fetch `index` via the connection -> edge
}
fragment VideoRow on PageRow {
## fetch video entities
}
fragment GameRow on PageRow {
## fetch game entities
}
Currently, if I want to @catch something at an entity level, I would need to end up adding the @catch at every single usage of the PageRow, which can be over 20-25 rows for a given operation.
As a result, I think we could add a @catch for, say, RowEntitiesEdge, and allow it to "apply" to all the concrete field usages, I think it would allow us to use that directive in a more straightforward and clean way.
Can we consider extending the nullability spec to allow applying the
@catchto an interface type, and have it apply to all fields in that operation which implement that interface? Maybe using schema extensions if that's a better fit.Here's an example of what our schema looks like:
And then in our operations, we use spreads to
Currently, if I want to
@catchsomething at an entity level, I would need to end up adding the@catchat every single usage of thePageRow, which can be over 20-25 rows for a given operation.As a result, I think we could add a
@catchfor, say,RowEntitiesEdge, and allow it to "apply" to all the concrete field usages, I think it would allow us to use that directive in a more straightforward and clean way.