use {
serde::{Deserialize, Serialize},
serde_json::Value,
};
use crate::models::{album::Album, artist::Artist};
#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
pub struct AudioInfo {
pub bit_depth: Option<i32>,
pub sampling_rate: Option<f64>,
pub channels: Option<i32>,
pub codec: Option<String>,
}
#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
pub struct Track {
pub id: Option<i32>,
pub title: Option<String>,
pub version: Option<String>,
pub isrc: Option<String>,
pub track_number: Option<i32>,
pub duration: Option<i32>,
pub media_number: Option<i32>,
pub work: Option<String>,
pub album: Option<Box<Album>>,
pub performer: Option<Box<Artist>>,
pub performers: Option<String>,
pub composer: Option<Box<Artist>>,
pub audio_info: Option<AudioInfo>,
pub copyright: Option<String>,
pub streamable: Option<bool>,
pub downloadable: Option<bool>,
pub hires: Option<bool>,
pub maximum_bit_depth: Option<i32>,
pub maximum_sampling_rate: Option<f64>,
pub maximum_channel_count: Option<i32>,
pub release_date_original: Option<String>,
pub release_date_stream: Option<String>,
pub parental_warning: Option<bool>,
pub product_sales_factors: Option<Value>,
}