@@ -271,9 +271,12 @@ fn handle_registry_error(err: anyhow::Error) -> Result<SearchResult, SearchError
271271}
272272
273273//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 {
275275 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+ ) ,
277280 releases : vec ! [ ] ,
278281 search_query : Some ( query) ,
279282 search_sort_by : Some ( sort_by) ,
@@ -655,9 +658,9 @@ pub(crate) async fn search_handler(
655658
656659 let search_result = match search_result {
657660 Ok ( result) => result,
658- Err ( SearchError :: CratesIo ( _ ) ) => {
661+ Err ( SearchError :: CratesIo ( error_message ) ) => {
659662 // 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 ( ) ) ;
661664 }
662665 Err ( SearchError :: Other ( err) ) => {
663666 // For other errors, propagate them normally
@@ -1315,7 +1318,7 @@ mod tests {
13151318 . await
13161319 . get ( "/releases/search?query=doesnt_matter_here" )
13171320 . await ?;
1318- assert_eq ! ( response. status( ) , 500 ) ;
1321+ assert_eq ! ( response. status( ) , 503 ) ;
13191322
13201323 assert ! ( response. text( ) . await ?. contains( & format!( "{status}" ) ) ) ;
13211324 Ok ( ( ) )
0 commit comments