use serde::{Deserialize, Serialize};
use crate::models::{
Artist, Focus, Genre, Image, ItemSearchResult, Playlist as PlaylistModel, Tag, Track, User,
};
#[derive(Serialize, Deserialize, Debug, Clone, Default)]
pub struct Playlist {
#[serde(rename = "id")]
pub id: Option<i64>,
#[serde(rename = "name")]
pub name: Option<String>,
#[serde(rename = "description")]
pub description: Option<String>,
#[serde(rename = "duration")]
pub duration: Option<i64>,
#[serde(rename = "created_at")]
pub created_at: Option<i64>,
#[serde(rename = "updated_at")]
pub updated_at: Option<i64>,
#[serde(rename = "public_at")]
pub public_at: Option<i64>,
#[serde(rename = "published_from")]
pub published_from: Option<i64>,
#[serde(rename = "published_to")]
pub published_to: Option<i64>,
#[serde(rename = "tracks_count")]
pub tracks_count: Option<i32>,
#[serde(rename = "users_count")]
pub users_count: Option<i32>,
#[serde(rename = "is_public")]
pub is_public: Option<bool>,
#[serde(rename = "is_featured")]
pub is_featured: Option<bool>,
#[serde(rename = "is_published")]
pub is_published: Option<bool>,
#[serde(rename = "is_collaborative")]
pub is_collaborative: Option<bool>,
#[serde(rename = "owner")]
pub owner: Option<User>,
#[serde(rename = "image")]
pub image: Option<Image>,
#[serde(rename = "images")]
pub images: Option<Vec<String>>,
#[serde(rename = "image_rectangle")]
pub image_rectangle: Option<Vec<String>>,
#[serde(rename = "image_rectangle_mini")]
pub image_rectangle_mini: Option<Vec<String>>,
#[serde(rename = "images150")]
pub images150: Option<Vec<String>>,
#[serde(rename = "images300")]
pub images300: Option<Vec<String>>,
#[serde(rename = "tracks")]
pub tracks: Option<ItemSearchResult<Box<Track>>>,
#[serde(rename = "genres")]
pub genres: Option<Vec<Genre>>,
#[serde(rename = "tags")]
pub tags: Option<Vec<Tag>>,
#[serde(rename = "featured_artists")]
pub featured_artists: Option<Vec<Box<Artist>>>,
#[serde(rename = "similar_playlists")]
pub similar_playlists: Option<ItemSearchResult<Box<PlaylistModel>>>,
#[serde(rename = "items_focus")]
pub items_focus: Option<Vec<Focus>>,
#[serde(rename = "timestamp_position")]
pub timestamp_position: Option<i64>,
#[serde(rename = "slug")]
pub slug: Option<String>,
#[serde(rename = "stores")]
pub stores: Option<Vec<String>>,
}