banditore icon indicating copy to clipboard operation
banditore copied to clipboard

Jump to GraphQL to save some requests?

Open j0k3r opened this issue 8 years ago • 1 comments

Request to retrieve all information from tag & release for a given repository.

This one only use releases:

{
  repository(owner: "j0k3r", name: "graby") {
    tags: refs(refPrefix: "refs/tags/", first: 5, direction: DESC) {
      edges {
        tag: node {
          name
          target {
            ... on Tag {
              sha: oid
              message
              tagger {
                name
                date
              }
            }
          }
        }
      }
    }
    releases(last: 5) {
      nodes {
        id
        name
        description
        publishedAt
        tag {
          name
        }
      }
    }
  }
}

This one only use tags:

{
  repository(owner: "rails", name: "rails") {
    tags: refs(refPrefix: "refs/tags/", first: 5, direction: DESC) {
      edges {
        tag: node {
          name
          target {
            ... on Commit {
              message
              author {
                name
                date
              }
            }
            ... on Tag {
              message
              tagger {
                name
                date
              }
            }
          }
        }
      }
    }
    releases(last: 5) {
      nodes {
        id
        name
        description
        publishedAt
        tag {
          name
        }
      }
    }
  }
}

Request to retrieve starred repositories & all information

First page:

{
  user(login: "j0k3r") {
    starredRepositories(first: 50, orderBy: {field: STARRED_AT, direction: ASC}) {
      pageInfo {
        hasNextPage
        hasPreviousPage
        endCursor
      }
      edges {
        node {
          id
          name
          description
          owner {
            login
            avatarURL
          }
        }
      }
    }
  }
}

The second one (using the endCursor as after parameter and until hasNextPage is false):

{
  user(login: "j0k3r") {
    starredRepositories(first: 50, orderBy: {field: STARRED_AT, direction: ASC}, after: "Y3Vyc29yOjIwMTItMDEtMDRUMTE6MjA6NDgrMDE6MDA=") {
      pageInfo {
        hasNextPage
        hasPreviousPage
        endCursor
      }
      edges {
        node {
          id
          name
          description
          owner {
            login
            avatarURL
          }
        }
      }
    }
  }
}

j0k3r avatar Feb 15 '17 17:02 j0k3r

Rate limit on GraphQL is limited to 200 calls per hour :disappointed:

j0k3r avatar Feb 16 '17 14:02 j0k3r