broke up graph queries

This commit is contained in:
luke-hagar-sp
2024-02-29 17:13:13 -05:00
parent cb77945e32
commit d2e47ce10e
2 changed files with 65 additions and 15239 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -4,16 +4,49 @@ import { writeFileSync } from "fs";
import { Octokit } from "octokit"; import { Octokit } from "octokit";
import { throttling } from "@octokit/plugin-throttling"; import { throttling } from "@octokit/plugin-throttling";
import { ContributionsCollection, Language } from "./Types"; import { ContributionsCollection, Language } from "./Types";
import type { GraphQlQueryResponseData } from "@octokit/graphql";
config(); config();
const ThrottledOctokit = Octokit.plugin(throttling); const ThrottledOctokit = Octokit.plugin(throttling);
export async function getGraphQLData(octokit: Octokit, username: string) { export async function getUserData(
return octokit.graphql.paginate( octokit: Octokit,
`query userInfo($login: String!, $cursor: String) { username: string
): Promise<GraphQlQueryResponseData> {
return octokit.graphql(
`query userInfo($login: String!) {
user(login: $login) { user(login: $login) {
name name
login login
pullRequests(first: 1) {
totalCount
}
}
viewer {
openIssues: issues(states: OPEN) {
totalCount
}
closedIssues: issues(states: CLOSED) {
totalCount
}
}
rateLimit {
limit
remaining
used
resetAt
}
}`,
{
login: username,
}
);
}
export async function getRepoData(octokit: Octokit, username: string) {
return octokit.graphql.paginate(
`query repoInfo ($login: String!, $cursor: String) {
user(login: $login) {
repositories( repositories(
orderBy: {field: STARGAZERS, direction: DESC} orderBy: {field: STARGAZERS, direction: DESC}
ownerAffiliations: OWNER ownerAffiliations: OWNER
@@ -32,7 +65,6 @@ export async function getGraphQLData(octokit: Octokit, username: string) {
edges { edges {
size size
node { node {
color color
name name
} }
@@ -44,23 +76,6 @@ export async function getGraphQLData(octokit: Octokit, username: string) {
hasNextPage hasNextPage
} }
} }
pullRequests(first: 1) {
totalCount
}
}
viewer {
openIssues: issues(states: OPEN) {
totalCount
}
closedIssues: issues(states: CLOSED) {
totalCount
}
}
rateLimit {
limit
remaining
used
resetAt
} }
}`, }`,
{ {
@@ -257,7 +272,7 @@ try {
const token = process.env["GITHUB_TOKEN"]; const token = process.env["GITHUB_TOKEN"];
if (!token) throw new Error("GITHUB_TOKEN is not present"); if (!token) throw new Error("GITHUB_TOKEN is not present");
const username = core.getInput("username"); const username = core.getInput("username") || "lukehagar";
if (!username) throw new Error("Username is not present"); if (!username) throw new Error("Username is not present");
@@ -293,25 +308,27 @@ try {
// const accountCreationDate = userDetails.data.created_at; // const accountCreationDate = userDetails.data.created_at;
const [ const [
graphQLData, userData,
repoData,
totalCommits, totalCommits,
// contributionsCollection // contributionsCollection
] = await Promise.all([ ] = await Promise.all([
getGraphQLData(octokit, username), getUserData(octokit, username),
getRepoData(octokit, username),
getTotalCommits(octokit, username), getTotalCommits(octokit, username),
// getContributionCollection(octokit, accountCreationDate), // getContributionCollection(octokit, accountCreationDate),
]); ]);
let starCount = 0; let starCount = 0;
let forkCount = 0; let forkCount = 0;
for (const repo of graphQLData.user.repositories.nodes) { for (const repo of repoData.user.repositories.nodes) {
starCount += repo.stargazers.totalCount; starCount += repo.stargazers.totalCount;
forkCount += repo.forkCount; forkCount += repo.forkCount;
} }
const contributorStatsPromises = []; const contributorStatsPromises = [];
const viewCountPromises = []; const viewCountPromises = [];
for (const repo of graphQLData.user.repositories.nodes) { for (const repo of repoData.user.repositories.nodes) {
contributorStatsPromises.push( contributorStatsPromises.push(
getReposContributorsStats(octokit, username, repo.name) getReposContributorsStats(octokit, username, repo.name)
); );
@@ -348,7 +365,7 @@ try {
const topLanguages: Language[] = []; const topLanguages: Language[] = [];
let codeByteTotal = 0; let codeByteTotal = 0;
for (const node of graphQLData.user.repositories.nodes) { for (const node of repoData.user.repositories.nodes) {
for (const edge of node.languages.edges) { for (const edge of node.languages.edges) {
if (NOT_LANGUAGES_OBJ[edge.node.name.toLowerCase()]) { if (NOT_LANGUAGES_OBJ[edge.node.name.toLowerCase()]) {
continue; continue;
@@ -385,15 +402,15 @@ try {
repoViews, repoViews,
linesOfCodeChanged, linesOfCodeChanged,
totalCommits: totalCommits.data.total_count, totalCommits: totalCommits.data.total_count,
totalPullRequests: graphQLData.user.pullRequests.totalCount, totalPullRequests: userData.user.pullRequests.totalCount,
codeByteTotal, codeByteTotal,
topLanguages, topLanguages,
forkCount, forkCount,
starCount, starCount,
// totalContributions: // totalContributions:
// contributionsCollection.contributionCalendar.totalContributions, // contributionsCollection.contributionCalendar.totalContributions,
closedIssues: graphQLData.viewer.closedIssues.totalCount, closedIssues: userData.viewer.closedIssues.totalCount,
openIssues: graphQLData.viewer.openIssues.totalCount, openIssues: userData.viewer.openIssues.totalCount,
fetchedAt, fetchedAt,
// contributionData: allDays, // contributionData: allDays,
}, },