use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
#[serde(default)]
pub struct PlaylistsAttributes {
#[serde(rename = "accessType")]
pub access_type: AccessType,
#[serde(rename = "bounded")]
pub bounded: bool,
#[serde(rename = "createdAt")]
pub created_at: String,
#[serde(rename = "description", skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(rename = "duration", skip_serializing_if = "Option::is_none")]
pub duration: Option<String>,
#[serde(rename = "externalLinks")]
pub external_links: Vec<models::ExternalLink>,
#[serde(rename = "lastModifiedAt")]
pub last_modified_at: String,
#[serde(rename = "name")]
pub name: String,
#[serde(rename = "numberOfFollowers")]
pub number_of_followers: i32,
#[serde(rename = "numberOfItems", skip_serializing_if = "Option::is_none")]
pub number_of_items: Option<i32>,
#[serde(rename = "playlistType")]
pub playlist_type: PlaylistType,
}
impl PlaylistsAttributes {
pub fn new(access_type: AccessType, bounded: bool, created_at: String, external_links: Vec<models::ExternalLink>, last_modified_at: String, name: String, number_of_followers: i32, playlist_type: PlaylistType) -> PlaylistsAttributes {
PlaylistsAttributes {
access_type,
bounded,
created_at,
description: None,
duration: None,
external_links,
last_modified_at,
name,
number_of_followers,
number_of_items: None,
playlist_type,
}
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum AccessType {
#[serde(rename = "PUBLIC")]
Public,
#[serde(rename = "UNLISTED")]
Unlisted,
}
impl Default for AccessType {
fn default() -> AccessType {
Self::Public
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum PlaylistType {
#[serde(rename = "EDITORIAL")]
Editorial,
#[serde(rename = "USER")]
User,
#[serde(rename = "MIX")]
Mix,
#[serde(rename = "ARTIST")]
Artist,
}
impl Default for PlaylistType {
fn default() -> PlaylistType {
Self::Editorial
}
}