@@ -64,6 +64,7 @@ pub(crate) fn get_releases(
64
64
limit : i64 ,
65
65
order : Order ,
66
66
latest_only : bool ,
67
+ deployed_only : bool ,
67
68
) -> Vec < Release > {
68
69
let offset = ( page - 1 ) * limit;
69
70
@@ -104,6 +105,7 @@ pub(crate) fn get_releases(
104
105
conn. query ( query. as_str ( ) , & [ & limit, & offset, & filter_failed] )
105
106
. unwrap ( )
106
107
. into_iter ( )
108
+ . filter ( |row| !deployed_only || !crate_invalidation_pending ( & row. get ( 5 ) ) )
107
109
. map ( |row| Release {
108
110
name : row. get ( 0 ) ,
109
111
version : row. get ( 1 ) ,
@@ -260,7 +262,14 @@ impl_webpage! {
260
262
261
263
pub fn home_page ( req : & mut Request ) -> IronResult < Response > {
262
264
let mut conn = extension ! ( req, Pool ) . get ( ) ?;
263
- let recent_releases = get_releases ( & mut conn, 1 , RELEASES_IN_HOME , Order :: ReleaseTime , true ) ;
265
+ let recent_releases = get_releases (
266
+ & mut conn,
267
+ 1 ,
268
+ RELEASES_IN_HOME ,
269
+ Order :: ReleaseTime ,
270
+ true ,
271
+ true ,
272
+ ) ;
264
273
265
274
HomePage { recent_releases } . into_response ( req)
266
275
}
@@ -277,7 +286,14 @@ impl_webpage! {
277
286
278
287
pub fn releases_feed_handler ( req : & mut Request ) -> IronResult < Response > {
279
288
let mut conn = extension ! ( req, Pool ) . get ( ) ?;
280
- let recent_releases = get_releases ( & mut conn, 1 , RELEASES_IN_FEED , Order :: ReleaseTime , true ) ;
289
+ let recent_releases = get_releases (
290
+ & mut conn,
291
+ 1 ,
292
+ RELEASES_IN_FEED ,
293
+ Order :: ReleaseTime ,
294
+ true ,
295
+ false ,
296
+ ) ;
281
297
282
298
ReleaseFeed { recent_releases } . into_response ( req)
283
299
}
@@ -340,6 +356,7 @@ fn releases_handler(req: &mut Request, release_type: ReleaseType) -> IronResult<
340
356
RELEASES_IN_RELEASES ,
341
357
release_order,
342
358
latest_only,
359
+ false ,
343
360
)
344
361
} ;
345
362
@@ -710,6 +727,21 @@ mod tests {
710
727
use std:: collections:: HashSet ;
711
728
use test_case:: test_case;
712
729
730
+ #[ test]
731
+ fn get_releases_only_deployed ( ) {
732
+ wrapper ( |env| {
733
+ let db = env. db ( ) ;
734
+
735
+ env. fake_release ( ) . name ( "foo" ) . version ( "1.0.0" ) . create ( ) ?;
736
+
737
+ assert ! (
738
+ !get_releases( & mut db. conn( ) , 1 , 10 , Order :: ReleaseTime , true , false ) . is_empty( )
739
+ ) ;
740
+ assert ! ( get_releases( & mut db. conn( ) , 1 , 10 , Order :: ReleaseTime , true , true ) . is_empty( ) ) ;
741
+ Ok ( ( ) )
742
+ } )
743
+ }
744
+
713
745
#[ test]
714
746
fn get_releases_by_stars ( ) {
715
747
wrapper ( |env| {
@@ -728,7 +760,7 @@ mod tests {
728
760
// release without stars will not be shown
729
761
env. fake_release ( ) . name ( "baz" ) . version ( "1.0.0" ) . create ( ) ?;
730
762
731
- let releases = get_releases ( & mut db. conn ( ) , 1 , 10 , Order :: GithubStars , true ) ;
763
+ let releases = get_releases ( & mut db. conn ( ) , 1 , 10 , Order :: GithubStars , true , false ) ;
732
764
assert_eq ! (
733
765
vec![
734
766
"bar" , // 20 stars
@@ -739,7 +771,6 @@ mod tests {
739
771
. map( |release| release. name. as_str( ) )
740
772
. collect:: <Vec <_>>( ) ,
741
773
) ;
742
-
743
774
Ok ( ( ) )
744
775
} )
745
776
}
0 commit comments