use serde::Deserialize;
#[derive(Debug, Clone, Deserialize)]
pub struct Track {
pub track_id: i64,
#[serde(default)]
pub track_name: String,
#[serde(default)]
pub artist_name: String,
#[serde(default)]
pub album_name: Option<String>,
#[serde(default)]
pub track_length: i32,
#[serde(default)]
pub commontrack_vanity_id: Option<String>,
}
#[derive(Debug, Clone, Deserialize)]
pub struct TrackResponse {
pub message: Option<Message>,
}
impl TrackResponse {
pub(crate) fn from_track(track: Track) -> Self {
Self {
message: Some(Message {
header: Header {
status_code: 200,
confidence: 1000.0,
},
body: Some(Body { track: Some(track) }),
}),
}
}
}
#[derive(Debug, Clone, Deserialize)]
pub struct Message {
pub header: Header,
pub body: Option<Body>,
}
#[derive(Debug, Clone, Deserialize)]
pub struct Header {
#[serde(rename = "status_code")]
pub status_code: i32,
#[serde(default)]
pub confidence: f64,
}
#[derive(Debug, Clone, Deserialize)]
pub struct Body {
pub track: Option<Track>,
}