summaryrefslogtreecommitdiff
path: root/src/routes/song.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/routes/song.rs')
-rw-r--r--src/routes/song.rs92
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 {