Skip to content

Commit b6d576c

Browse files
[MM-874]: Fixed the issue of LHS not working without setting organisation lock (#838)
* [MM-874]: Fixed the issue of LHS not working without setting organisation lock * [MM-874]: Moved the org restricted fetching of data code above the unrestricted data fetch
1 parent 857e96c commit b6d576c

File tree

1 file changed

+63
-46
lines changed

1 file changed

+63
-46
lines changed

server/plugin/graphql/lhs_request.go

Lines changed: 63 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -22,72 +22,89 @@ const (
2222
func (c *Client) GetLHSData(ctx context.Context) ([]*github.Issue, []*github.Issue, []*github.Issue, error) {
2323
orgsList := c.getOrganizations()
2424
var resultReview, resultAssignee, resultOpenPR []*github.Issue
25+
26+
params := map[string]interface{}{
27+
queryParamOpenPRQueryArg: githubv4.String(fmt.Sprintf("author:%s is:pr is:%s archived:false", c.username, githubv4.PullRequestStateOpen)),
28+
queryParamReviewPRQueryArg: githubv4.String(fmt.Sprintf("review-requested:%s is:pr is:%s archived:false", c.username, githubv4.PullRequestStateOpen)),
29+
queryParamAssigneeQueryArg: githubv4.String(fmt.Sprintf("assignee:%s is:%s archived:false", c.username, githubv4.PullRequestStateOpen)),
30+
queryParamReviewsCursor: (*githubv4.String)(nil),
31+
queryParamAssignmentsCursor: (*githubv4.String)(nil),
32+
queryParamOpenPRsCursor: (*githubv4.String)(nil),
33+
}
34+
35+
var err error
2536
for _, org := range orgsList {
26-
params := map[string]interface{}{
27-
queryParamOpenPRQueryArg: githubv4.String(fmt.Sprintf("author:%s is:pr is:%s archived:false", c.username, githubv4.PullRequestStateOpen)),
28-
queryParamReviewPRQueryArg: githubv4.String(fmt.Sprintf("review-requested:%s is:pr is:%s archived:false", c.username, githubv4.PullRequestStateOpen)),
29-
queryParamAssigneeQueryArg: githubv4.String(fmt.Sprintf("assignee:%s is:%s archived:false", c.username, githubv4.PullRequestStateOpen)),
30-
queryParamReviewsCursor: (*githubv4.String)(nil),
31-
queryParamAssignmentsCursor: (*githubv4.String)(nil),
32-
queryParamOpenPRsCursor: (*githubv4.String)(nil),
37+
resultReview, resultAssignee, resultOpenPR, err = c.fetchLHSData(ctx, resultReview, resultAssignee, resultOpenPR, org, params)
38+
if err != nil {
39+
return nil, nil, nil, err
3340
}
41+
}
42+
43+
if len(orgsList) == 0 {
44+
return c.fetchLHSData(ctx, resultReview, resultAssignee, resultOpenPR, "", params)
45+
}
3446

47+
return resultReview, resultAssignee, resultOpenPR, nil
48+
}
49+
50+
func (c *Client) fetchLHSData(ctx context.Context, resultReview, resultAssignee, resultOpenPR []*github.Issue, org string, params map[string]interface{}) ([]*github.Issue, []*github.Issue, []*github.Issue, error) {
51+
if org != "" {
3552
params[queryParamOpenPRQueryArg] = githubv4.String(fmt.Sprintf("org:%s %s", org, params[queryParamOpenPRQueryArg]))
3653
params[queryParamReviewPRQueryArg] = githubv4.String(fmt.Sprintf("org:%s %s", org, params[queryParamReviewPRQueryArg]))
3754
params[queryParamAssigneeQueryArg] = githubv4.String(fmt.Sprintf("org:%s %s", org, params[queryParamAssigneeQueryArg]))
55+
}
3856

39-
allReviewRequestsFetched, allAssignmentsFetched, allOpenPRsFetched := false, false, false
57+
allReviewRequestsFetched, allAssignmentsFetched, allOpenPRsFetched := false, false, false
4058

41-
for {
42-
if allReviewRequestsFetched && allAssignmentsFetched && allOpenPRsFetched {
43-
break
44-
}
45-
46-
if err := c.executeQuery(ctx, &mainQuery, params); err != nil {
47-
return nil, nil, nil, errors.Wrap(err, "Not able to excute the query")
48-
}
59+
for {
60+
if allReviewRequestsFetched && allAssignmentsFetched && allOpenPRsFetched {
61+
break
62+
}
4963

50-
if !allReviewRequestsFetched {
51-
for i := range mainQuery.ReviewRequests.Nodes {
52-
resp := mainQuery.ReviewRequests.Nodes[i]
53-
pr := getPR(&resp)
54-
resultReview = append(resultReview, pr)
55-
}
64+
if err := c.executeQuery(ctx, &mainQuery, params); err != nil {
65+
return nil, nil, nil, errors.Wrap(err, "Not able to excute the query")
66+
}
5667

57-
if !mainQuery.ReviewRequests.PageInfo.HasNextPage {
58-
allReviewRequestsFetched = true
59-
}
68+
if !allReviewRequestsFetched {
69+
for i := range mainQuery.ReviewRequests.Nodes {
70+
resp := mainQuery.ReviewRequests.Nodes[i]
71+
pr := getPR(&resp)
72+
resultReview = append(resultReview, pr)
73+
}
6074

61-
params[queryParamReviewsCursor] = githubv4.NewString(mainQuery.ReviewRequests.PageInfo.EndCursor)
75+
if !mainQuery.ReviewRequests.PageInfo.HasNextPage {
76+
allReviewRequestsFetched = true
6277
}
6378

64-
if !allAssignmentsFetched {
65-
for i := range mainQuery.Assignments.Nodes {
66-
resp := mainQuery.Assignments.Nodes[i]
67-
issue := newIssueFromAssignmentResponse(&resp)
68-
resultAssignee = append(resultAssignee, issue)
69-
}
79+
params[queryParamReviewsCursor] = githubv4.NewString(mainQuery.ReviewRequests.PageInfo.EndCursor)
80+
}
7081

71-
if !mainQuery.Assignments.PageInfo.HasNextPage {
72-
allAssignmentsFetched = true
73-
}
82+
if !allAssignmentsFetched {
83+
for i := range mainQuery.Assignments.Nodes {
84+
resp := mainQuery.Assignments.Nodes[i]
85+
issue := newIssueFromAssignmentResponse(&resp)
86+
resultAssignee = append(resultAssignee, issue)
87+
}
7488

75-
params[queryParamAssignmentsCursor] = githubv4.NewString(mainQuery.Assignments.PageInfo.EndCursor)
89+
if !mainQuery.Assignments.PageInfo.HasNextPage {
90+
allAssignmentsFetched = true
7691
}
7792

78-
if !allOpenPRsFetched {
79-
for i := range mainQuery.OpenPullRequests.Nodes {
80-
resp := mainQuery.OpenPullRequests.Nodes[i]
81-
pr := getPR(&resp)
82-
resultOpenPR = append(resultOpenPR, pr)
83-
}
93+
params[queryParamAssignmentsCursor] = githubv4.NewString(mainQuery.Assignments.PageInfo.EndCursor)
94+
}
8495

85-
if !mainQuery.OpenPullRequests.PageInfo.HasNextPage {
86-
allOpenPRsFetched = true
87-
}
96+
if !allOpenPRsFetched {
97+
for i := range mainQuery.OpenPullRequests.Nodes {
98+
resp := mainQuery.OpenPullRequests.Nodes[i]
99+
pr := getPR(&resp)
100+
resultOpenPR = append(resultOpenPR, pr)
101+
}
88102

89-
params[queryParamOpenPRsCursor] = githubv4.NewString(mainQuery.OpenPullRequests.PageInfo.EndCursor)
103+
if !mainQuery.OpenPullRequests.PageInfo.HasNextPage {
104+
allOpenPRsFetched = true
90105
}
106+
107+
params[queryParamOpenPRsCursor] = githubv4.NewString(mainQuery.OpenPullRequests.PageInfo.EndCursor)
91108
}
92109
}
93110

0 commit comments

Comments
 (0)