use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
#[serde(default)]
pub struct LyricsAttributes {
#[serde(rename = "direction", skip_serializing_if = "Option::is_none")]
pub direction: Option<Direction>,
#[serde(rename = "lrcText", skip_serializing_if = "Option::is_none")]
pub lrc_text: Option<String>,
#[serde(rename = "provider", skip_serializing_if = "Option::is_none")]
pub provider: Option<Box<models::LyricsAttributesProvider>>,
#[serde(rename = "technicalStatus")]
pub technical_status: TechnicalStatus,
#[serde(rename = "text", skip_serializing_if = "Option::is_none")]
pub text: Option<String>,
}
impl LyricsAttributes {
pub fn new(technical_status: TechnicalStatus) -> LyricsAttributes {
LyricsAttributes {
direction: None,
lrc_text: None,
provider: None,
technical_status,
text: None,
}
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Direction {
#[serde(rename = "LEFT_TO_RIGHT")]
LeftToRight,
#[serde(rename = "RIGHT_TO_LEFT")]
RightToLeft,
}
impl Default for Direction {
fn default() -> Direction {
Self::LeftToRight
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum TechnicalStatus {
#[serde(rename = "PENDING")]
Pending,
#[serde(rename = "PROCESSING")]
Processing,
#[serde(rename = "ERROR")]
Error,
#[serde(rename = "OK")]
Ok,
}
impl Default for TechnicalStatus {
fn default() -> TechnicalStatus {
Self::Pending
}
}