From 98c518e1493c7c06cc695378e4529c7a9e9cd51c Mon Sep 17 00:00:00 2001 From: KD Date: Wed, 19 Mar 2025 00:56:17 +0000 Subject: [PATCH] Added Album collection --- src/album.rs | 31 +++++++++++++++++++++++++++++++ src/lib.rs | 1 + 2 files changed, 32 insertions(+) create mode 100644 src/album.rs diff --git a/src/album.rs b/src/album.rs new file mode 100644 index 0000000..f0db09b --- /dev/null +++ b/src/album.rs @@ -0,0 +1,31 @@ +pub mod collection { + use serde::{Deserialize, Serialize}; + + fn is_set(num: &i32) -> bool { + *num >= 0 + } + + #[derive(Clone, Debug, Deserialize, Serialize)] + pub struct Album { + #[serde(skip_serializing_if = "String::is_empty")] + #[serde(alias = "album")] + pub title: String, + pub genre: String, + pub year: i32, + pub track_count: i32, + #[serde(skip_serializing_if = "is_set")] + pub disc_count: i32, + #[serde(skip_serializing_if = "Vec::is_empty")] + pub tracks: Vec, + } + + #[derive(Clone, Debug, Deserialize, Serialize)] + pub struct Track { + pub title: String, + pub artist: String, + pub disc: i32, + pub track: i32, + // In seconds + pub duration: f64, + } +} diff --git a/src/lib.rs b/src/lib.rs index 425aff6..723b0fc 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,4 +1,5 @@ pub mod access_level; +pub mod album; pub mod constants; pub mod login_result; pub mod song;