You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

4.7 KiB

Examples of graphql (queries)

Note: that all queries present here can be ran in your own school. For this you must login with an admin role and access the following route https://((DOMAIN))/graphiql. Depending on our role the tables permissions may differ.

Simple queries to get info

  • The following query returns the basic information of a given user :
query getUserInfo($name: String!) {
  user(where: {login: {_eq: $name}}) {
    profile
    login
    attrs
    auditRatio
    campus
    createdAt
    totalDown
    totalUp
    updatedAt
  }
}

Query variable:

{"name": "Joao"}

  • The following query returns the list of all records of a given user (including the finished ones), the output would be :
    • author of the record
    • the time that the record was created and will end
    • message/reason for the ban
query bannedUsers($name: String!) {
  record(where: {user: {login: {_eq: $name}}}) {
    authorLogin
    banEndAt
    createdAt
    message
  }
}

Query variable:

{"name": "Joao"}

  • The following query returns a list of groups given the path name. The output will be the captainLogin and the userLogin from all the members of that group.
query getGroupInfo($object: String!) {
  group(where: {object: {name: {_eq: $object}}}) {
    captainLogin
    path
    status
    members {
      userLogin
    }
  }
}

Query variable:

{"path": "/madere/div-01/go-reloaded"}

  • The following query returns all events in a given campus, the output for this query will be the:
    • object name
    • path of the event
    • parent event (this will be the parent event of the given child event)
query eventsByCampus($campus: String!) {
  event(where: {campus: {_eq: $campus}}) {
    object {
      name
    }
    parent {
      path
      object {
        name
      }
      createdAt
      endAt
      path
    }
  }
}

Query variable:

{ "campus": "madere" }

  • The following query returns information of users that are associated to an event. For the query to work it should be given two arguments : campus and the path. The output will be the user name/login, audit ratio and the event info.
query usersEvent($campus: String!, $path: String!) {
  event_user(where: {event: {path: {_eq: $path}, _and: {campus: {_eq: $campus}}}}) {
    userAuditRatio
    userLogin
    event {
      path
      object {
        name
      }
    }
  }
}

Query variable:

{"campus": "madera", "path": "/madere/div-01/piscine-js"}
  • If we wanted to filter the users that were registered to a type of object in the event, we would just need to filter the object by type instead of filtering using the path. Should look something like this:
query usersEvent($campus: String!, $objectType: String!) {
  event_user(where: {event: {object: {type: {_eq: $objectType}}, _and: {campus: {_eq: $campus}}}}) {
    userAuditRatio
    userLogin
    event {
      path
      object {
        name
      }
    }
  }
}

Query variable:

{"campus": "pyc", "objectType": "raid"}

  • The following query returns the current XP of a given user, the output should be the amount that this user should have
query xp($name: String!) {
  xp(where: {user: {login: {_eq: $name}}}) {
    user {
      login
    }
    amount
  }
}

Query variable:

{"name": "Joao"}
  • If we wanted to filter all XP gain from an user from a given object, it would look something like this:
query eventXp($userName: String!, $objectName: String!) {
  xp_by_path(where: {user: {login: {_eq: $userName}}, _and: {object: {name: {_eq: $objectName}}}}) {
    path
    user {
      login
    }
    event {
      path
    }
    object {
      name
    }
    amount
  }
}

Query variable:

{"userName": "Joao", "objectName": "ascii-art"}

  • The following query gives information relevant to the onboarding games, This view will.
query getGameInfo($name: String!) {
  toad_result_view(where: {user: {login: {_eq: $name}}}) {
    user {
      login
    }
    attempts
    allowedAttempts
     score
    path
    games
  }
}

Query variables:

{"name": "Joao"}

  • The following query returns information about the progress of a given user in a specific path.
query getProgress($name: String!, $path: String!) {
  progress(where: {user: {login: {_eq: $name}}, _and: {path: {_eq: $path}}}) {
    path
    grade
    isDone
    campus
    group {
      captainLogin
      members {
        user {
          login
        }
      }
    }
  }
}

query variable:

{"name": "Joao", "path": "/madere/piscine-go/exam-01" }