1use serde::{Deserialize, Serialize};
3
4use crate::model::album::Album;
5use crate::model::artist::Artist;
6use crate::model::{AudioMode, AudioQuality};
7
8#[derive(Default, Debug, Serialize, Deserialize)]
9#[serde(rename_all = "camelCase")]
10pub struct Track {
11 pub id: Option<u32>,
12 pub title: Option<String>,
13 pub duration: Option<u32>,
14 pub replay_gain: Option<f32>,
15 pub peak: Option<f32>,
16 pub allow_streaming: Option<bool>,
17 pub stream_ready: Option<bool>,
18 pub stream_start_date: Option<String>,
19 pub premium_streaming_only: Option<bool>,
20 pub track_number: Option<u16>,
21 pub volume_number: Option<u16>,
22 pub version: Option<String>,
23 pub popularity: Option<u32>,
24 pub copyright: Option<String>,
25 pub url: Option<String>,
26 pub isrc: Option<String>,
27 pub editable: Option<bool>,
28 pub explicit: Option<bool>,
29 pub audio_quality: Option<AudioQuality>,
30 pub audio_modes: Vec<Option<AudioMode>>,
31 pub artist: Option<Artist>,
32 pub artists: Vec<Option<Artist>>,
33 pub album: Option<Album>,
34}