use std::fmt;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum ChallengeLifecycleStatus {
PendingReview,
Active,
Archived,
}
impl ChallengeLifecycleStatus {
pub fn as_str(self) -> &'static str {
match self {
Self::PendingReview => "pending_review",
Self::Active => "active",
Self::Archived => "archived",
}
}
pub fn from_storage_value(value: &str) -> Option<Self> {
match value {
"pending_review" => Some(Self::PendingReview),
"active" => Some(Self::Active),
"archived" => Some(Self::Archived),
_ => None,
}
}
}
impl fmt::Display for ChallengeLifecycleStatus {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.write_str(self.as_str())
}
}