@@ -470,9 +470,19 @@ pub(crate) fn queued_or_active_crate_invalidations(
470
470
/// Return the count of queued or active invalidations, per distribution id
471
471
pub ( crate ) fn queued_or_active_crate_invalidation_count_by_distribution (
472
472
conn : & mut impl postgres:: GenericClient ,
473
+ config : & Config ,
473
474
) -> Result < HashMap < String , i64 > > {
474
- Ok ( conn
475
- . query (
475
+ let mut result: HashMap < String , i64 > = HashMap :: from_iter (
476
+ config
477
+ . cloudfront_distribution_id_web
478
+ . iter ( )
479
+ . chain ( config. cloudfront_distribution_id_static . iter ( ) )
480
+ . cloned ( )
481
+ . map ( |id| ( id, 0 ) ) ,
482
+ ) ;
483
+
484
+ result. extend (
485
+ conn. query (
476
486
r#"
477
487
SELECT
478
488
cdn_distribution_id,
@@ -482,8 +492,10 @@ pub(crate) fn queued_or_active_crate_invalidation_count_by_distribution(
482
492
& [ ] ,
483
493
) ?
484
494
. iter ( )
485
- . map ( |row| ( row. get ( 0 ) , row. get ( 1 ) ) )
486
- . collect ( ) )
495
+ . map ( |row| ( row. get ( 0 ) , row. get ( 1 ) ) ) ,
496
+ ) ;
497
+
498
+ Ok ( result)
487
499
}
488
500
489
501
#[ cfg( test) ]
@@ -527,6 +539,27 @@ mod tests {
527
539
} )
528
540
}
529
541
542
+ #[ test]
543
+ fn invalidation_counts_are_zero_with_empty_queue ( ) {
544
+ crate :: test:: wrapper ( |env| {
545
+ env. override_config ( |config| {
546
+ config. cloudfront_distribution_id_web = Some ( "distribution_id_web" . into ( ) ) ;
547
+ config. cloudfront_distribution_id_static = Some ( "distribution_id_static" . into ( ) ) ;
548
+ } ) ;
549
+
550
+ let config = env. config ( ) ;
551
+ let mut conn = env. db ( ) . conn ( ) ;
552
+ assert ! ( queued_or_active_crate_invalidations( & mut * conn) ?. is_empty( ) ) ;
553
+
554
+ let counts =
555
+ queued_or_active_crate_invalidation_count_by_distribution ( & mut * conn, & config) ?;
556
+ assert_eq ! ( counts. len( ) , 2 ) ;
557
+ assert_eq ! ( * counts. get( "distribution_id_web" ) . unwrap( ) , 0 ) ;
558
+ assert_eq ! ( * counts. get( "distribution_id_static" ) . unwrap( ) , 0 ) ;
559
+ Ok ( ( ) )
560
+ } )
561
+ }
562
+
530
563
#[ test]
531
564
fn invalidate_a_crate ( ) {
532
565
crate :: test:: wrapper ( |env| {
@@ -536,6 +569,7 @@ mod tests {
536
569
} ) ;
537
570
538
571
let cdn = env. cdn ( ) ;
572
+ let config = env. config ( ) ;
539
573
let mut conn = env. db ( ) . conn ( ) ;
540
574
assert ! ( queued_or_active_crate_invalidations( & mut * conn) ?. is_empty( ) ) ;
541
575
@@ -574,7 +608,8 @@ mod tests {
574
608
]
575
609
) ;
576
610
577
- let counts = queued_or_active_crate_invalidation_count_by_distribution ( & mut * conn) ?;
611
+ let counts =
612
+ queued_or_active_crate_invalidation_count_by_distribution ( & mut * conn, & config) ?;
578
613
assert_eq ! ( counts. len( ) , 2 ) ;
579
614
assert_eq ! ( * counts. get( "distribution_id_web" ) . unwrap( ) , 2 ) ;
580
615
assert_eq ! ( * counts. get( "distribution_id_static" ) . unwrap( ) , 1 ) ;
0 commit comments