diff options
author | niliara-edu <nil.jimeno@estudiant.fjaverianas.com> | 2025-01-20 00:13:45 +0100 |
---|---|---|
committer | niliara-edu <nil.jimeno@estudiant.fjaverianas.com> | 2025-01-20 00:13:45 +0100 |
commit | 44833bc898cac0612907613ed64ee4ff2a94a5c8 (patch) | |
tree | 5bb8f355ebeabeead47495f05d00a186d2e06960 /src/routes/song.rs | |
parent | ed0f5925de1931a13e6713d73e174a5362fc5d68 (diff) |
complete database rework
Diffstat (limited to 'src/routes/song.rs')
-rw-r--r-- | src/routes/song.rs | 92 |
1 files changed, 19 insertions, 73 deletions
diff --git a/src/routes/song.rs b/src/routes/song.rs index 0cdd4b5..4cc20e9 100644 --- a/src/routes/song.rs +++ b/src/routes/song.rs @@ -1,4 +1,4 @@ -use crate::routes::Song; +use crate::database::Song; use crate::AppState; use actix_web::{get, web, HttpResponse}; use serde::Deserialize; @@ -16,86 +16,32 @@ pub async fn song( app_state: web::Data<AppState>, get_args: web::Query<SongQueryOptions>, ) -> HttpResponse { - let search_attempt: sqlx::Result<Vec<Song>>; - - match true { + let search_attempt: sqlx::Result<Vec<Song>> = match true { _ if check_if_exists(&get_args.id) => { - search_attempt = sqlx::query_as!( - Song, - "SELECT song.name, song.lyrics, song.id, - album.name as album_name, album.id as album_id, - artist.name as artist_name, artist.id as artist_id - FROM song - INNER JOIN album ON song.album_id = album.id - INNER JOIN artist ON album.artist_id = artist.id - WHERE song.id=?", - &get_args.id, - ) - .fetch_all(&app_state.pool) - .await; + app_state + .database + .select_song_by_id(&get_args.id.clone().unwrap()) + .await } _ if check_if_exists(&get_args.name) => { - let new_name : String = format!("{}{}{}", "%", &get_args.name.clone().unwrap(), "%"); - search_attempt = sqlx::query_as!( - Song, - "SELECT song.name, song.lyrics, song.id, - album.name as album_name, album.id as album_id, - artist.name as artist_name, artist.id as artist_id - FROM song - INNER JOIN album ON song.album_id = album.id - INNER JOIN artist ON album.artist_id = artist.id - WHERE LOWER(song.name) LIKE LOWER(?)", - new_name, - ) - .fetch_all(&app_state.pool) - .await; + app_state + .database + .select_songs_by_name(&get_args.name.clone().unwrap()) + .await } _ if check_if_exists(&get_args.album) => { - search_attempt = sqlx::query_as!( - Song, - "SELECT song.name, song.lyrics, song.id, - album.name as album_name, album.id as album_id, - artist.name as artist_name, artist.id as artist_id - FROM song - INNER JOIN album ON song.album_id = album.id - INNER JOIN artist ON album.artist_id = artist.id - WHERE song.album_id=? - ", - &get_args.album, - ) - .fetch_all(&app_state.pool) - .await; + app_state + .database + .select_songs_by_album(&get_args.album.clone().unwrap()) + .await } _ if check_if_exists(&get_args.artist) => { - search_attempt = sqlx::query_as!( - Song, - "SELECT song.name, song.lyrics, song.id, - album.name as album_name, album.id as album_id, - artist.name as artist_name, artist.id as artist_id - FROM song - INNER JOIN album ON song.album_id = album.id - INNER JOIN artist ON album.artist_id = artist.id - WHERE album.artist_id=? - ", - &get_args.artist, - ) - .fetch_all(&app_state.pool) - .await; - } - _ => { - search_attempt = sqlx::query_as!( - Song, - "SELECT song.name, song.lyrics, song.id, - album.name as album_name, album.id as album_id, - artist.name as artist_name, artist.id as artist_id - FROM song - INNER JOIN album ON song.album_id = album.id - INNER JOIN artist ON album.artist_id = artist.id - ", - ) - .fetch_all(&app_state.pool) - .await; + app_state + .database + .select_songs_by_artist(&get_args.artist.clone().unwrap()) + .await } + _ => app_state.database.select_songs().await, }; match search_attempt { |