Inline fragments
GraphQL's permits polymorphism through inline fragments, through objects being available as GraphQL Unions and Interfaces. Eduflow uses inline fragments across the various activity object types.
Eduflow activities all have Activity.title
, so all activities inherit from ActivityInterface
.
Querying
{
course(id: "00000000-5945-95c7-65fc-a9747b200320") {
flows {
activities {
... on ActivityInterface {
title
}
}
}
}
}
Inline fragments
Using specific activity fragments act as a way to upcast objects. Here's an example of PeerReview
ran against the connection above, and via direct activity lookup.
{
course(id: "00000000-5945-95c6-65fc-a9747b200320") {
flows {
activities {
__typename
... on ActivityInterface {
title
}
... on PeerReviewActivity {
reviews {
edges {
node {
reviewType
createdAt
}
}
}
}
}
}
}
}
See also
Inline fragments on graphql.org
Unions on on graphql.org
Interfaces on graphql.org
Last updated
Was this helpful?