diff --git a/source/app/mocks.mjs b/source/app/mocks.mjs index a971b1f6..5a221bb2 100644 --- a/source/app/mocks.mjs +++ b/source/app/mocks.mjs @@ -211,9 +211,21 @@ //Gists query if (/^query Gists /.test(query)) { console.debug(`metrics/compute/mocks > mocking graphql api result > Projects`) - return ({ + return /after: "MOCKED_CURSOR"/m.test(query) ? ({ user:{ gists:{ + edges:[], + nodes:[], + } + } + }) : ({ + user:{ + gists:{ + edges:[ + { + cursor:"MOCKED_CURSOR" + }, + ], totalCount:faker.random.number(100), nodes:[ { diff --git a/source/plugins/gists/index.mjs b/source/plugins/gists/index.mjs index 1c10dae1..10d1618b 100644 --- a/source/plugins/gists/index.mjs +++ b/source/plugins/gists/index.mjs @@ -5,13 +5,26 @@ //Check if plugin is enabled and requirements are met if ((!enabled)||(!q.gists)) return null - //Retrieve gists from graphql api - console.debug(`metrics/compute/${login}/plugins > gists > querying api`) - const {user:{gists}} = await graphql(queries.gists({login})) + //Query gists from GitHub API + const gists = [] + { + //Iterate through gists + let cursor = null + let pushed = 0 + do { + console.debug(`metrics/compute/${login}/plugins > gists > retrieving gists after ${cursor}`) + const {user:{gists:{edges, nodes, totalCount}}} = await graphql(queries.gists({login, after:cursor ? `after: "${cursor}"` : ""})) + cursor = edges?.[edges?.length-1]?.cursor + gists.push(...nodes) + gists.totalCount = totalCount + pushed = nodes.length + } while ((pushed)&&(cursor)) + console.debug(`metrics/compute/${login}/plugins > gists > loaded ${gists.length} gists`) + } //Iterate through gists - console.debug(`metrics/compute/${login}/plugins > gists > processing ${gists.nodes.length} gists`) + console.debug(`metrics/compute/${login}/plugins > gists > processing ${gists.length} gists`) let stargazers = 0, forks = 0, comments = 0, files = 0 - for (const gist of gists.nodes) { + for (const gist of gists) { //Skip forks if (gist.isFork) continue diff --git a/source/queries/gists.graphql b/source/queries/gists.graphql index 9e38dd78..a7b2dbac 100644 --- a/source/queries/gists.graphql +++ b/source/queries/gists.graphql @@ -1,6 +1,9 @@ query Gists { user(login: "$login") { - gists(last: 100) { + gists($after first: 100, orderBy: {field: UPDATED_AT, direction: DESC}) { + edges { + cursor + } totalCount nodes { stargazerCount