Skip to content

Commit d1cd682

Browse files
committed
GitHub GraphQL: use variables
Use variables rather than interpolating json data in GraphQL query. Clean up some other bits of the github issue/pr code.
1 parent 6de1a23 commit d1cd682

File tree

1 file changed

+30
-24
lines changed

1 file changed

+30
-24
lines changed

lib/MetaCPAN/Script/Tickets.pm

Lines changed: 30 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -126,57 +126,63 @@ RELEASE: while ( my $release = $scroll->next ) {
126126
next unless $user;
127127
log_debug {"Retrieving issues from $user/$repo"};
128128

129-
my $data = $self->github_graphql->query(
130-
sprintf <<'END_QUERY', map $json->encode($_), $user, $repo );
131-
query {
132-
repository(owner: %s, name: %s) {
133-
openIssues: issues(states: OPEN) {
134-
totalCount
135-
}
136-
closedIssues: issues(states: CLOSED) {
137-
totalCount
138-
}
139-
openPullRequests: pullRequests(states: OPEN) {
140-
totalCount
141-
}
142-
closedPullRequests: pullRequests(states: [CLOSED, MERGED]) {
143-
totalCount
144-
}
129+
my $dist_summary = $summary{ $release->{'distribution'} } ||= {};
130+
131+
my $vars = {
132+
user => $user,
133+
repo => $repo,
134+
};
135+
my $data = $self->github_graphql->query( <<'END_QUERY', $vars );
136+
query($user:String!, $repo:String!) {
137+
repository(owner: $user, name: $repo) {
138+
openIssues: issues(states: OPEN) {
139+
totalCount
140+
}
141+
closedIssues: issues(states: CLOSED) {
142+
totalCount
143+
}
144+
openPullRequests: pullRequests(states: OPEN) {
145+
totalCount
146+
}
147+
closedPullRequests: pullRequests(states: [CLOSED, MERGED]) {
148+
totalCount
145149
}
146150
}
151+
}
147152
END_QUERY
148153

149154
if ( my $error = $data->{errors} ) {
150155
for my $error (@$error) {
151156
my $log_message
152157
= "[$release->{distribution}] $error->{message}";
153158
if ( $error->{type} eq 'NOT_FOUND' ) {
154-
delete $summary{ $release->{'distribution'} }{'bugs'}
155-
{'github'};
159+
delete $dist_summary->{'bugs'}{'github'};
156160
log_info {$log_message};
157161
}
158162
else {
159163
log_error {$log_message};
160164
}
165+
}
166+
if (@$error) {
161167
next RELEASE;
162168
}
163169
}
164170

171+
my $repo_data = $data->{data}{repository};
165172
my $open
166-
= $data->{data}{repository}{openIssues}{totalCount}
167-
+ $data->{data}{repository}{openPullRequests}{totalCount};
173+
= $repo_data->{openIssues}{totalCount}
174+
+ $repo_data->{openPullRequests}{totalCount};
168175
my $closed
169-
= $data->{data}{repository}{closedIssues}{totalCount}
170-
+ $data->{data}{repository}{closedPullRequests}{totalCount};
176+
= $repo_data->{closedIssues}{totalCount}
177+
+ $repo_data->{closedPullRequests}{totalCount};
171178

172-
my $rec = {
179+
$dist_summary->{'bugs'}{'github'} = {
173180
active => $open,
174181
open => $open,
175182
closed => $closed,
176183
source => $source,
177184
};
178185

179-
$summary{ $release->{'distribution'} }{'bugs'}{'github'} = $rec;
180186
}
181187

182188
log_info {"writing github data"};

0 commit comments

Comments
 (0)