@@ -1314,9 +1314,7 @@ impl Repository {
1314
1314
let commits = commit
1315
1315
. history
1316
1316
. nodes
1317
- . ok_or_else ( || anyhow:: anyhow!( "No history." ) ) ?
1318
1317
. into_iter ( )
1319
- . filter_map ( |node| node)
1320
1318
// Don't include anything newer than `newest`
1321
1319
. skip_while ( |node| {
1322
1320
if found_newest || node. oid . 0 == newest {
@@ -1338,11 +1336,7 @@ impl Repository {
1338
1336
// Skip nodes that aren't the first parent
1339
1337
. filter ( |node| {
1340
1338
let this_first_parent = node. parents . nodes
1341
- . as_ref ( )
1342
- // Grab the first parent
1343
- . and_then ( |nodes| nodes. first ( ) )
1344
- // Strip away the useless Option
1345
- . and_then ( |parent_opt| parent_opt. as_ref ( ) )
1339
+ . first ( )
1346
1340
. map ( |parent| parent. oid . 0 . clone ( ) ) ;
1347
1341
1348
1342
match & next_first_parent {
@@ -1377,12 +1371,8 @@ impl Repository {
1377
1371
. filter_map ( |node| {
1378
1372
// Determine if this is associated with a PR or not.
1379
1373
match node. associated_pull_requests
1380
- // Strip away the useless Option
1381
- . and_then ( |pr| pr. nodes )
1382
1374
// Get the first PR (we only care about one)
1383
- . and_then ( |mut nodes| nodes. pop ( ) )
1384
- // Strip away the useless Option
1385
- . flatten ( ) {
1375
+ . and_then ( |mut pr| pr. nodes . pop ( ) ) {
1386
1376
Some ( pr) => {
1387
1377
// Only include a PR once
1388
1378
if prs_seen. insert ( pr. number ) {
@@ -2008,7 +1998,7 @@ impl IssuesQuery for LeastRecentlyReviewedPullRequests {
2008
1998
let repository_owner = repo. owner ( ) . to_owned ( ) ;
2009
1999
let repository_name = repo. name ( ) . to_owned ( ) ;
2010
2000
2011
- let mut prs: Vec < Option < queries:: PullRequest > > = vec ! [ ] ;
2001
+ let mut prs: Vec < queries:: PullRequest > = vec ! [ ] ;
2012
2002
2013
2003
let mut args = queries:: LeastRecentlyReviewedPullRequestsArguments {
2014
2004
repository_owner,
@@ -2033,13 +2023,7 @@ impl IssuesQuery for LeastRecentlyReviewedPullRequests {
2033
2023
. ok_or_else ( || anyhow:: anyhow!( "No data returned." ) ) ?
2034
2024
. repository
2035
2025
. ok_or_else ( || anyhow:: anyhow!( "No repository." ) ) ?;
2036
- prs. extend (
2037
- repository
2038
- . pull_requests
2039
- . nodes
2040
- . unwrap_or_default ( )
2041
- . into_iter ( ) ,
2042
- ) ;
2026
+ prs. extend ( repository. pull_requests . nodes ) ;
2043
2027
let page_info = repository. pull_requests . page_info ;
2044
2028
if !page_info. has_next_page || page_info. end_cursor . is_none ( ) {
2045
2029
break ;
@@ -2049,23 +2033,17 @@ impl IssuesQuery for LeastRecentlyReviewedPullRequests {
2049
2033
2050
2034
let mut prs: Vec < _ > = prs
2051
2035
. into_iter ( )
2052
- . filter_map ( |pr| pr)
2053
2036
. filter_map ( |pr| {
2054
2037
if pr. is_draft {
2055
2038
return None ;
2056
2039
}
2057
- let labels = pr. labels ;
2058
- let labels = ( || -> Option < _ > {
2059
- let labels = labels?;
2060
- let nodes = labels. nodes ?;
2061
- let labels = nodes
2062
- . into_iter ( )
2063
- . filter_map ( |node| node)
2064
- . map ( |node| node. name )
2065
- . collect :: < Vec < _ > > ( ) ;
2066
- Some ( labels)
2067
- } ) ( )
2068
- . unwrap_or_default ( ) ;
2040
+ let labels = pr
2041
+ . labels
2042
+ . map ( |l| l. nodes )
2043
+ . unwrap_or_default ( )
2044
+ . into_iter ( )
2045
+ . map ( |node| node. name )
2046
+ . collect :: < Vec < _ > > ( ) ;
2069
2047
if !labels. iter ( ) . any ( |label| label == "T-compiler" ) {
2070
2048
return None ;
2071
2049
}
@@ -2074,49 +2052,36 @@ impl IssuesQuery for LeastRecentlyReviewedPullRequests {
2074
2052
let assignees: Vec < _ > = pr
2075
2053
. assignees
2076
2054
. nodes
2077
- . unwrap_or_default ( )
2078
2055
. into_iter ( )
2079
- . filter_map ( |user| user)
2080
2056
. map ( |user| user. login )
2081
2057
. collect ( ) ;
2082
2058
2083
- let latest_reviews = pr. latest_reviews ;
2084
- let mut reviews = ( || -> Option < _ > {
2085
- let reviews = latest_reviews?;
2086
- let nodes = reviews. nodes ?;
2087
- let reviews = nodes
2088
- . into_iter ( )
2089
- . filter_map ( |node| node)
2090
- . filter_map ( |node| {
2091
- let created_at = node. created_at ;
2092
- node. author . map ( |author| ( author, created_at) )
2093
- } )
2094
- . map ( |( author, created_at) | ( author. login , created_at) )
2095
- . collect :: < Vec < _ > > ( ) ;
2096
- Some ( reviews)
2097
- } ) ( )
2098
- . unwrap_or_default ( ) ;
2059
+ let mut reviews = pr
2060
+ . latest_reviews
2061
+ . map ( |connection| connection. nodes )
2062
+ . unwrap_or_default ( )
2063
+ . into_iter ( )
2064
+ . filter_map ( |node| {
2065
+ let created_at = node. created_at ;
2066
+ node. author . map ( |author| ( author, created_at) )
2067
+ } )
2068
+ . map ( |( author, created_at) | ( author. login , created_at) )
2069
+ . collect :: < Vec < _ > > ( ) ;
2070
+
2099
2071
reviews. sort_by_key ( |r| r. 1 ) ;
2100
2072
2101
- let comments = pr. comments ;
2102
- let comments = ( || -> Option < _ > {
2103
- let nodes = comments. nodes ?;
2104
- let comments = nodes
2105
- . into_iter ( )
2106
- . filter_map ( |node| node)
2107
- . filter_map ( |node| {
2108
- let created_at = node. created_at ;
2109
- node. author . map ( |author| ( author, created_at) )
2110
- } )
2111
- . map ( |( author, created_at) | ( author. login , created_at) )
2112
- . collect :: < Vec < _ > > ( ) ;
2113
- Some ( comments)
2114
- } ) ( )
2115
- . unwrap_or_default ( ) ;
2116
- let mut comments: Vec < _ > = comments
2073
+ let mut comments = pr
2074
+ . comments
2075
+ . nodes
2117
2076
. into_iter ( )
2077
+ . filter_map ( |node| {
2078
+ let created_at = node. created_at ;
2079
+ node. author . map ( |author| ( author, created_at) )
2080
+ } )
2081
+ . map ( |( author, created_at) | ( author. login , created_at) )
2118
2082
. filter ( |comment| assignees. contains ( & comment. 0 ) )
2119
- . collect ( ) ;
2083
+ . collect :: < Vec < _ > > ( ) ;
2084
+
2120
2085
comments. sort_by_key ( |c| c. 1 ) ;
2121
2086
2122
2087
let updated_at = std:: cmp:: max (
0 commit comments