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

Last updated