diff --git a/src/lib.rs b/src/lib.rs index e3bcb75..c39b4a8 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,5 +1,6 @@ pub mod access_level; pub mod login_result; +pub mod song; pub mod token; pub mod user; diff --git a/src/song.rs b/src/song.rs new file mode 100644 index 0000000..9b5357a --- /dev/null +++ b/src/song.rs @@ -0,0 +1,73 @@ +use std::default::Default; +use std::io::Read; + +use serde::{Deserialize, Serialize}; + +#[derive(Clone, Debug, Deserialize, Serialize)] +pub struct Song { + #[serde(alias = "id")] + pub id: Option, + pub title: Option, + pub artist: Option, + pub album: Option, + pub album_artist: Option, + pub genre: Option, + pub year: Option, + pub duration: Option, + pub track: Option, + pub disc: Option, + pub disc_count: Option, + pub track_count: Option, + pub audio_type: Option, + pub date_created: Option, + pub filename: Option, + pub user_id: Option, + #[serde(skip)] + pub data: Option>, + #[serde(skip)] + pub directory: Option, + #[serde(skip)] + pub album_id: Option, + #[serde(skip)] + pub artist_id: Option, + #[serde(skip)] + pub genre_id: Option, + #[serde(skip)] + pub coverart_id: Option, +} + +impl Default for Song { + fn default() -> Self { + Song { + id: None, + title: None, + artist: None, + album: None, + album_artist: None, + genre: None, + year: None, + duration: None, + track: None, + disc: None, + disc_count: None, + track_count: None, + audio_type: None, + date_created: None, + filename: None, + user_id: None, + data: None, + directory: None, + album_id: None, + artist_id: None, + genre_id: None, + coverart_id: None, + } + } +} + +impl Song { + // TODO: Implement + pub fn to_metadata_json(&self) -> Result { + return serde_json::to_string_pretty(&self); + } +}