@@ -271,9 +271,12 @@ fn handle_registry_error(err: anyhow::Error) -> Result<SearchResult, SearchError
271
271
}
272
272
273
273
//Error message to gracefully display
274
- fn create_search_error_response ( query : String , sort_by : String ) -> Search {
274
+ fn create_search_error_response ( query : String , sort_by : String , error_message : String ) -> Search {
275
275
Search {
276
- title : "Search service is not currently available" . to_owned ( ) ,
276
+ title : format ! (
277
+ "Search service is not currently available: {}" ,
278
+ error_message
279
+ ) ,
277
280
releases : vec ! [ ] ,
278
281
search_query : Some ( query) ,
279
282
search_sort_by : Some ( sort_by) ,
@@ -655,9 +658,9 @@ pub(crate) async fn search_handler(
655
658
656
659
let search_result = match search_result {
657
660
Ok ( result) => result,
658
- Err ( SearchError :: CratesIo ( _ ) ) => {
661
+ Err ( SearchError :: CratesIo ( error_message ) ) => {
659
662
// Return a user-friendly error response
660
- return Ok ( create_search_error_response ( query, sort_by) . into_response ( ) ) ;
663
+ return Ok ( create_search_error_response ( query, sort_by, error_message ) . into_response ( ) ) ;
661
664
}
662
665
Err ( SearchError :: Other ( err) ) => {
663
666
// For other errors, propagate them normally
@@ -1315,7 +1318,7 @@ mod tests {
1315
1318
. await
1316
1319
. get ( "/releases/search?query=doesnt_matter_here" )
1317
1320
. await ?;
1318
- assert_eq ! ( response. status( ) , 500 ) ;
1321
+ assert_eq ! ( response. status( ) , 503 ) ;
1319
1322
1320
1323
assert ! ( response. text( ) . await ?. contains( & format!( "{status}" ) ) ) ;
1321
1324
Ok ( ( ) )
0 commit comments