use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
#[serde(default)]
pub struct AlbumsAttributes {
#[serde(rename = "accessType", skip_serializing_if = "Option::is_none")]
pub access_type: Option<AccessType>,
#[serde(rename = "availability", skip_serializing_if = "Option::is_none")]
pub availability: Option<Vec<Availability>>,
#[serde(rename = "barcodeId")]
pub barcode_id: String,
#[serde(rename = "copyright", skip_serializing_if = "Option::is_none")]
pub copyright: Option<Box<models::Copyright>>,
#[serde(rename = "duration")]
pub duration: String,
#[serde(rename = "explicit")]
pub explicit: bool,
#[serde(rename = "externalLinks", skip_serializing_if = "Option::is_none")]
pub external_links: Option<Vec<models::ExternalLink>>,
#[serde(rename = "mediaTags")]
pub media_tags: Vec<String>,
#[serde(rename = "numberOfItems")]
pub number_of_items: i32,
#[serde(rename = "numberOfVolumes")]
pub number_of_volumes: i32,
#[serde(rename = "popularity")]
pub popularity: f64,
#[serde(rename = "releaseDate", skip_serializing_if = "Option::is_none")]
pub release_date: Option<String>,
#[serde(rename = "title")]
pub title: String,
#[serde(rename = "type")]
pub r#type: Type,
#[serde(rename = "version", skip_serializing_if = "Option::is_none")]
pub version: Option<String>,
}
impl AlbumsAttributes {
pub fn new(barcode_id: String, duration: String, explicit: bool, media_tags: Vec<String>, number_of_items: i32, number_of_volumes: i32, popularity: f64, title: String, r#type: Type) -> AlbumsAttributes {
AlbumsAttributes {
access_type: None,
availability: None,
barcode_id,
copyright: None,
duration,
explicit,
external_links: None,
media_tags,
number_of_items,
number_of_volumes,
popularity,
release_date: None,
title,
r#type,
version: None,
}
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum AccessType {
#[serde(rename = "PUBLIC")]
Public,
#[serde(rename = "UNLISTED")]
Unlisted,
#[serde(rename = "PRIVATE")]
Private,
}
impl Default for AccessType {
fn default() -> AccessType {
Self::Public
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Availability {
#[serde(rename = "STREAM")]
Stream,
#[serde(rename = "DJ")]
Dj,
#[serde(rename = "STEM")]
Stem,
}
impl Default for Availability {
fn default() -> Availability {
Self::Stream
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Type {
#[serde(rename = "ALBUM")]
Album,
#[serde(rename = "EP")]
Ep,
#[serde(rename = "SINGLE")]
Single,
}
impl Default for Type {
fn default() -> Type {
Self::Album
}
}