diff options
Diffstat (limited to 'src/routes/search_results.rs')
-rw-r--r-- | src/routes/search_results.rs | 38 |
1 files changed, 21 insertions, 17 deletions
diff --git a/src/routes/search_results.rs b/src/routes/search_results.rs index 5c9efb8..3056aef 100644 --- a/src/routes/search_results.rs +++ b/src/routes/search_results.rs @@ -14,18 +14,29 @@ pub async fn search_results( app_state: web::Data<AppState>, get_args: web::Query<SearchQueryOptions>, ) -> HttpResponse { + let default: String = String::from(""); + + if get_args.id.is_some() { + let id: &str = get_args.id.as_ref().unwrap_or(&default); + let search_attempt: ( + sqlx::Result<Option<Artist>, sqlx::Error>, + sqlx::Result<Option<Album>, sqlx::Error>, + sqlx::Result<Option<Song>, sqlx::Error>, + ) = { app_state.database.search_results_by_id(id).await }; + + return HttpResponse::Ok().json(( + search_attempt.0.unwrap_or(None), + search_attempt.1.unwrap_or(None), + search_attempt.2.unwrap_or(None), + )); + }; + let search_attempt: ( sqlx::Result<Vec<Artist>, sqlx::Error>, sqlx::Result<Vec<Album>, sqlx::Error>, sqlx::Result<Vec<Song>, sqlx::Error>, ) = match true { - _ if check_if_exists(&get_args.id) => { - app_state - .database - .search_results_by_id(&get_args.id.clone().unwrap()) - .await - } - _ if check_if_exists(&get_args.name) => { + _ if get_args.name.is_some() => { app_state .database .search_results_by_name(&get_args.name.clone().unwrap()) @@ -37,15 +48,8 @@ pub async fn search_results( }; return HttpResponse::Ok().json(( - search_attempt.0.unwrap_or_else(|_| return Vec::new()), - search_attempt.1.unwrap_or_else(|_| return Vec::new()), - search_attempt.2.unwrap_or_else(|_| return Vec::new()), + search_attempt.0.unwrap_or(Vec::new()), + search_attempt.1.unwrap_or(Vec::new()), + search_attempt.2.unwrap_or(Vec::new()), )); } - -fn check_if_exists(value: &Option<String>) -> bool { - match value { - Some(_) => true, - None => false, - } -} |