use serde::{Deserialize, Serialize};
#[derive(Debug, Default, Clone, Eq, Hash, PartialEq, Deserialize, Serialize)]
#[serde(rename_all(deserialize = "SCREAMING_SNAKE_CASE"))]
pub enum Status {
Finished,
Releasing,
#[default]
NotYetReleased,
Cancelled,
Hiatus,
Current,
Planning,
Completed,
Dropped,
Paused,
Repeating,
}
impl Status {
pub fn summary(&self) -> &str {
match self {
Status::Finished => "Has completed and is no longer being updated.",
Status::Releasing => "Currently releasing.",
Status::NotYetReleased => "To be released in the future.",
Status::Cancelled => "Ended before the work could be completed.",
Status::Hiatus => "Currently paused with the intention of resuming in the future.",
Status::Current => "Currently being updated.",
Status::Planning => "Planned for future release.",
Status::Completed => "Has completed and is no longer being updated.",
Status::Dropped => {
"No longer being updated due to a lack of interest or other reasons."
}
Status::Paused => "Currently paused.",
Status::Repeating => "Repeating the same content.",
}
}
}
impl std::fmt::Display for Status {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
Status::Finished => write!(f, "Finished"),
Status::Releasing => write!(f, "Releasing"),
Status::NotYetReleased => write!(f, "Not Yet Released"),
Status::Cancelled => write!(f, "Cancelled"),
Status::Hiatus => write!(f, "Hiatus"),
Status::Current => write!(f, "Current"),
Status::Planning => write!(f, "Planning"),
Status::Completed => write!(f, "Completed"),
Status::Dropped => write!(f, "Dropped"),
Status::Paused => write!(f, "Paused"),
Status::Repeating => write!(f, "Repeating"),
}
}
}