use crate::database::album::Album; use crate::database::artist::Artist; use crate::database::song::Song; use crate::AppState; use actix_web::{get, web, HttpResponse}; use serde::Deserialize; #[derive(Deserialize)] struct SearchQueryOptions { name: Option, } #[get("/search-results")] pub async fn search_results( app_state: web::Data, get_args: web::Query, ) -> HttpResponse { let search_attempt: ( sqlx::Result, sqlx::Error>, sqlx::Result, sqlx::Error>, sqlx::Result, sqlx::Error>, ) = match true { _ if get_args.name.is_some() => { app_state .database .search_results_by_name(&get_args.name.clone().unwrap()) .await } _ => ( Err(sqlx::Error::RowNotFound), Err(sqlx::Error::RowNotFound), Err(sqlx::Error::RowNotFound) ), }; return HttpResponse::Ok().json(( search_attempt.0.unwrap_or(Vec::new()), search_attempt.1.unwrap_or(Vec::new()), search_attempt.2.unwrap_or(Vec::new()), )); }