Skip to content

Commit 69707da

Browse files
fix: extract errors - suppress push access on fetchMembers, dont insert empty values in members (#392)
* dont insert empty value arrays * suppress push access github error --------- Co-authored-by: David Abram <[email protected]>
1 parent e06fbcc commit 69707da

File tree

5 files changed

+54
-10
lines changed

5 files changed

+54
-10
lines changed

package-lock.json

Lines changed: 18 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/functions/extract/src/get-members.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,11 @@ export const getMembers: GetMembersFunction = async (
3333

3434
const { members, pagination } = await integrations.sourceControl.fetchMembers(externalRepositoryId, namespaceName, repositoryName, perPage, page);
3535

36+
if (members.length === 0 && pagination.totalPages === 1) return {
37+
members: [],
38+
paginationInfo: pagination,
39+
}
40+
3641
const insertedMembers = await db.transaction(async (tx) => {
3742
return Promise.all(members.map(member =>
3843
tx.insert(entities.members).values(member)

packages/functions/extract/src/get-namespace-members.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,11 @@ export const getNamespaceMembers: GetNamespaceMembersFunction = async (
3333

3434
const { members, pagination } = await integrations.sourceControl.fetchNamespaceMembers(externalNamespaceId, namespaceName, perPage, page);
3535

36+
if (members.length === 0 && pagination.totalPages === 1) return {
37+
members: [],
38+
paginationInfo: pagination,
39+
}
40+
3641
// TODO: Deki is not a wizard
3742
const insertedMembers = await db.transaction(async (tx) => {
3843
return Promise.all(members.map(member =>

packages/integrations/source-control/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
"@acme/extract-schema": "*",
1515
"@gitbeaker/core": "^39.34.2",
1616
"@gitbeaker/rest": "^39.34.2",
17+
"@octokit/request-error": "^5.0.1",
1718
"@octokit/rest": "^20.0.2",
1819
"@types/parse-link-header": "^2.0.3",
1920
"fuse.js": "^7.0.0",

packages/integrations/source-control/src/github/index.ts

Lines changed: 25 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import type { NewRepository, NewNamespace, NewMergeRequest, NewMember, NewMergeR
66
import type { Pagination, TimePeriod } from '../source-control';
77
import type { components } from '@octokit/openapi-types';
88
import { TimelineEventTypes } from '../../../../../packages/schemas/extract/src/timeline-events';
9+
import { RequestError } from '@octokit/request-error';
910

1011
const FILE_STATUS_FLAGS_MAPPING: Record<
1112
"added"
@@ -137,13 +138,30 @@ export class GitHubSourceControl implements SourceControl {
137138
async fetchMembers(externalRepositoryId: number, namespaceName: string, repositoryName: string, perPage: number, page?: number): Promise<{ members: NewMember[], pagination: Pagination }> {
138139
page = page || 1;
139140

140-
const result = await this.api.repos.listCollaborators({
141-
owner: namespaceName,
142-
repo: repositoryName,
143-
page,
144-
per_page: perPage,
145-
affiliation: 'all',
146-
});
141+
let result: Awaited<ReturnType<Octokit['repos']['listCollaborators']>>;
142+
try {
143+
result = await this.api.repos.listCollaborators({
144+
owner: namespaceName,
145+
repo: repositoryName,
146+
page,
147+
per_page: perPage,
148+
affiliation: 'all',
149+
});
150+
} catch (error) {
151+
if (error instanceof RequestError && error.message === "Must have push access to view repository collaborators."){
152+
console.log("SUPPRESSED: Must have push access to view repository collaborators.")
153+
return {
154+
members: [],
155+
pagination: {
156+
page: 1,
157+
perPage: perPage,
158+
totalPages: 1,
159+
}
160+
}
161+
}
162+
163+
throw error;
164+
}
147165

148166
const linkHeader = parseLinkHeader(result.headers.link) || { next: { per_page: perPage } };
149167

0 commit comments

Comments
 (0)