use chrono::{DateTime, Utc};
use serde::{Deserialize, Serialize};
use super::{playlist::BasicAlbumPlaylist, track::BasicTrack, user::BasicUser};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BaseStreamItem {
pub created_at: DateTime<Utc>,
pub r#type: String,
pub user: BasicUser,
pub uuid: String,
pub caption: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Reposted {
pub target_urn: String,
pub user_urn: String,
pub caption: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TrackStreamItem {
#[serde(flatten)]
pub stream_item: BaseStreamItem,
pub track: BasicTrack,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TrackStreamRepostItem {
#[serde(flatten)]
pub stream_item: BaseStreamItem,
pub reposted: Option<Reposted>,
pub track: BasicTrack,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PlaylistStreamItem {
#[serde(flatten)]
pub stream_item: BaseStreamItem,
pub playlist: BasicAlbumPlaylist,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PlaylistStreamRepostItem {
#[serde(flatten)]
pub stream_item: BaseStreamItem,
pub reposted: Option<Reposted>,
pub playlist: BasicAlbumPlaylist,
}