From 8bf99be22c64d5fff9e15aa2ccc62905ca3e9dca Mon Sep 17 00:00:00 2001 From: KD Date: Sat, 11 Oct 2025 19:50:56 -0400 Subject: [PATCH] icarus_models version bump (#190) * icarus_models version bump * icarus_models changes * Code refactoring * Changes * Version bump * Fixed todo --- Cargo.lock | 6 ++--- Cargo.toml | 4 ++-- src/callers/coverart.rs | 36 ++++++++++++++++------------ src/callers/song.rs | 53 +++++++++++++++-------------------------- 4 files changed, 45 insertions(+), 54 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 55709a6..c82f0b1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -840,7 +840,7 @@ dependencies = [ [[package]] name = "icarus" -version = "0.2.2" +version = "0.2.3" dependencies = [ "axum", "axum-extra", @@ -889,8 +889,8 @@ dependencies = [ [[package]] name = "icarus_models" -version = "0.5.6" -source = "git+ssh://git@git.kundeng.us/phoenix/icarus_models.git?tag=v0.5.6#2d6b550ae6721b41ecc3039799f6a5e873869077" +version = "0.6.6" +source = "git+ssh://git@git.kundeng.us/phoenix/icarus_models.git?tag=v0.6.6-65-eac7562b80-111#eac7562b80b9f82d21ab737d1e84ba4f12e472dd" dependencies = [ "josekit", "rand 0.9.1", diff --git a/Cargo.toml b/Cargo.toml index 48a7d2e..c00a375 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "icarus" -version = "0.2.2" +version = "0.2.3" edition = "2024" rust-version = "1.88" @@ -26,7 +26,7 @@ josekit = { version = "0.10.1" } utoipa = { version = "5.4.0", features = ["axum_extras"] } utoipa-swagger-ui = { version = "9.0.2", features = ["axum"] } icarus_meta = { git = "ssh://git@git.kundeng.us/phoenix/icarus_meta.git", tag = "v0.3.0" } -icarus_models = { git = "ssh://git@git.kundeng.us/phoenix/icarus_models.git", tag = "v0.5.6" } +icarus_models = { git = "ssh://git@git.kundeng.us/phoenix/icarus_models.git", tag = "v0.6.6-65-eac7562b80-111" } icarus_envy = { git = "ssh://git@git.kundeng.us/phoenix/icarus_envy.git", tag = "v0.4.1-main-8f0d123db5-006" } [dev-dependencies] diff --git a/src/callers/coverart.rs b/src/callers/coverart.rs index 3aea352..9ab8156 100644 --- a/src/callers/coverart.rs +++ b/src/callers/coverart.rs @@ -473,8 +473,6 @@ pub mod cov_db { } pub mod endpoint { - use std::io::Write; - use axum::response::IntoResponse; /// Endpoint to queue cover art @@ -714,23 +712,31 @@ pub mod endpoint { coverart.title = song.album.clone(); coverart.data = data; - let mut file = std::fs::File::create(&save_path).unwrap(); - file.write_all(&coverart.data).unwrap(); + match coverart.save_to_filesystem() { + Ok(_) => { + match super::cov_db::create(&pool, &coverart, &song.id).await { + Ok(id) => { + coverart.song_id = song_id; + coverart.id = id; + println!("Cover Art created"); - match super::cov_db::create(&pool, &coverart, &song.id).await { - Ok(id) => { - // TODO: Populate song_id - coverart.id = id; - println!("Cover Art created"); + response.message = String::from("Successful"); + response.data.push(coverart); - response.message = String::from("Successful"); - response.data.push(coverart); - - (axum::http::StatusCode::OK, axum::Json(response)) + (axum::http::StatusCode::OK, axum::Json(response)) + } + Err(err) => { + response.message = err.to_string(); + (axum::http::StatusCode::BAD_REQUEST, axum::Json(response)) + } + } } Err(err) => { response.message = err.to_string(); - (axum::http::StatusCode::BAD_REQUEST, axum::Json(response)) + ( + axum::http::StatusCode::INTERNAL_SERVER_ERROR, + axum::Json(response), + ) } } } @@ -848,7 +854,7 @@ pub mod endpoint { axum::extract::Path(id): axum::extract::Path, ) -> (axum::http::StatusCode, axum::response::Response) { match super::cov_db::get_coverart(&pool, &id).await { - Ok(coverart) => match coverart.to_data() { + Ok(coverart) => match icarus_models::coverart::io::to_data(&coverart) { Ok(data) => { let bytes = axum::body::Bytes::from(data); let mut response = bytes.into_response(); diff --git a/src/callers/song.rs b/src/callers/song.rs index 1929e69..485626e 100644 --- a/src/callers/song.rs +++ b/src/callers/song.rs @@ -1207,8 +1207,10 @@ pub mod endpoint { if payload.is_valid() { let mut song = payload.to_song(); - song.filename = - song.generate_filename(icarus_models::types::MusicTypes::FlacExtension, true); + song.filename = icarus_models::song::generate_filename( + icarus_models::types::MusicTypes::FlacExtension, + true, + ); song.directory = icarus_envy::environment::get_root_directory().await.value; match song_queue::get_data(&pool, &payload.song_queue_id).await { @@ -1227,40 +1229,23 @@ pub mod endpoint { } } - let save_path = dir.join(&song.filename); + match song.save_to_filesystem() { + Ok(_) => match super::song_db::insert(&pool, &song).await { + Ok((date_created, id)) => { + song.id = id; + song.date_created = date_created; + response.message = String::from("Successful"); + response.data.push(song); - match std::fs::File::create(&save_path) { - Ok(mut file) => { - file.write_all(&song.data).unwrap(); - - match song.song_path() { - Ok(_) => match super::song_db::insert(&pool, &song).await { - Ok((date_created, id)) => { - song.id = id; - song.date_created = date_created; - response.message = String::from("Successful"); - response.data.push(song); - - (axum::http::StatusCode::OK, axum::Json(response)) - } - Err(err) => { - response.message = - format!("{:?} song {:?}", err.to_string(), song); - (axum::http::StatusCode::BAD_REQUEST, axum::Json(response)) - } - }, - Err(err) => { - response.message = err.to_string(); - (axum::http::StatusCode::BAD_REQUEST, axum::Json(response)) - } + (axum::http::StatusCode::OK, axum::Json(response)) } - } + Err(err) => { + response.message = format!("{:?} song {:?}", err.to_string(), song); + (axum::http::StatusCode::BAD_REQUEST, axum::Json(response)) + } + }, Err(err) => { - let song_path = song.song_path(); - response.message = format!( - "{err:?} Song directory: {} Filename: {} Save Path: {:?} Song Path: {:?}", - song.directory, song.filename, save_path, song_path - ); + response.message = err.to_string(); ( axum::http::StatusCode::INTERNAL_SERVER_ERROR, axum::Json(response), @@ -1466,7 +1451,7 @@ pub mod endpoint { axum::extract::Path(id): axum::extract::Path, ) -> (axum::http::StatusCode, axum::response::Response) { match super::song_db::get_song(&pool, &id).await { - Ok(song) => match song.to_data() { + Ok(song) => match icarus_models::song::io::to_data(&song) { Ok(data) => { let bytes = axum::body::Bytes::from(data); let mut response = bytes.into_response();