From 8fbd92620e8108574d9a7aceb2e582970d321b08 Mon Sep 17 00:00:00 2001 From: phoenix Date: Fri, 4 Apr 2025 02:21:31 +0000 Subject: [PATCH] Added function to make coverart init easier (#24) Reviewed-on: https://git.kundeng.us/phoenix/icarus_models/pulls/24 Co-authored-by: phoenix Co-committed-by: phoenix --- src/access_level.rs | 4 ++-- src/coverart.rs | 26 ++++++++++++++++++++++++++ src/login_result.rs | 2 +- src/song.rs | 27 ++++++++++----------------- tests/tests.rs | 2 ++ 5 files changed, 41 insertions(+), 20 deletions(-) diff --git a/src/access_level.rs b/src/access_level.rs index a51dcef..3c828e1 100644 --- a/src/access_level.rs +++ b/src/access_level.rs @@ -12,7 +12,7 @@ pub struct AccessLevel { impl Default for AccessLevel { fn default() -> Self { AccessLevel { - id: uuid::Uuid::new_v4(), + id: uuid::Uuid::nil(), level: String::new(), song_id: uuid::Uuid::new_v4(), } @@ -21,7 +21,7 @@ impl Default for AccessLevel { pub fn default_level() -> AccessLevel { AccessLevel { - id: uuid::Uuid::new_v4(), + id: uuid::Uuid::nil(), level: String::from("Public"), song_id: uuid::Uuid::new_v4(), } diff --git a/src/coverart.rs b/src/coverart.rs index ebbf013..810d4e1 100644 --- a/src/coverart.rs +++ b/src/coverart.rs @@ -10,6 +10,19 @@ pub struct CoverArt { pub data: Vec, } +pub mod init { + use crate::coverart::CoverArt; + + pub fn init_coverart_only_path(path: String) -> CoverArt { + CoverArt { + id: uuid::Uuid::nil(), + title: String::new(), + path: path.clone(), + data: Vec::new(), + } + } +} + impl CoverArt { pub fn to_data(&self) -> Result, std::io::Error> { let path: &String = &self.path; @@ -21,3 +34,16 @@ impl CoverArt { } } } + +#[cfg(test)] +mod tests { + use crate::coverart; + + #[test] + fn test_cover_art_image() { + let path: String = String::from("somepath"); + let coverart = coverart::init::init_coverart_only_path(path.clone()); + + assert_eq!(path, coverart.path); + } +} diff --git a/src/login_result.rs b/src/login_result.rs index c4b6740..29d60d9 100644 --- a/src/login_result.rs +++ b/src/login_result.rs @@ -15,7 +15,7 @@ pub struct LoginResult { impl Default for LoginResult { fn default() -> Self { LoginResult { - id: uuid::Uuid::new_v4(), + id: uuid::Uuid::nil(), username: String::new(), token: String::new(), token_type: String::new(), diff --git a/src/song.rs b/src/song.rs index bf277ff..5ed3440 100644 --- a/src/song.rs +++ b/src/song.rs @@ -227,9 +227,9 @@ mod embedded { // The song's duration is a floating point in seconds #[derive(Clone, Debug, Deserialize, Serialize)] pub struct Song { - #[serde(skip_serializing_if = "is_embed_zero")] + #[serde(skip_serializing_if = "init::is_uuid_nil")] #[serde(alias = "id")] - pub id: i32, + pub id: uuid::Uuid, #[serde(skip_serializing_if = "String::is_empty")] pub title: String, #[serde(skip_serializing_if = "String::is_empty")] @@ -240,17 +240,17 @@ mod embedded { pub album_artist: String, #[serde(skip_serializing_if = "String::is_empty")] pub genre: String, - #[serde(skip_serializing_if = "is_embed_zero")] + #[serde(skip_serializing_if = "init::is_embed_zero")] pub year: i32, - #[serde(skip_serializing_if = "is_embed_dur_not_set")] + #[serde(skip_serializing_if = "init::is_embed_dur_not_set")] pub duration: f64, - #[serde(skip_serializing_if = "is_embed_zero")] + #[serde(skip_serializing_if = "init::is_embed_zero")] pub track: i32, - #[serde(skip_serializing_if = "is_embed_zero")] + #[serde(skip_serializing_if = "init::is_embed_zero")] pub disc: i32, - #[serde(skip_serializing_if = "is_embed_zero")] + #[serde(skip_serializing_if = "init::is_embed_zero")] pub disc_count: i32, - #[serde(skip_serializing_if = "is_embed_zero")] + #[serde(skip_serializing_if = "init::is_embed_zero")] pub track_count: i32, #[serde(skip_serializing_if = "String::is_empty")] pub audio_type: String, @@ -258,7 +258,7 @@ mod embedded { pub date_created: String, #[serde(skip_serializing_if = "String::is_empty")] pub filename: String, - #[serde(skip_serializing_if = "is_embed_zero")] + #[serde(skip_serializing_if = "init::is_embed_zero")] pub user_id: i32, #[serde(skip)] pub data: Vec, @@ -274,18 +274,11 @@ mod embedded { // pub coverart_id: i32, } - fn is_embed_zero(num: &i32) -> bool { - *num == 0 - } - - fn is_embed_dur_not_set(num: &f64) -> bool { - *num == 0.0 - } impl Default for Song { fn default() -> Self { Song { - id: 0, + id: uuid::Uuid::nil(), title: String::new(), artist: String::new(), album: String::new(), diff --git a/tests/tests.rs b/tests/tests.rs index 7df899b..f281ea7 100644 --- a/tests/tests.rs +++ b/tests/tests.rs @@ -28,6 +28,7 @@ mod utils { } } +#[cfg(test)] mod song_tests { use std::fs::File; use std::io::Write; @@ -151,6 +152,7 @@ mod song_tests { } } +#[cfg(test)] mod album_tests { use crate::utils;