//! Bringing a catalog in from somewhere else: where it came from and how far //! the job got. use super::str_enum::impl_str_enum; use serde::{Deserialize, Serialize}; // --- Import System --- #[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)] #[serde(rename_all = "snake_case")] pub enum ImportSource { GenericCsv, Substack, Ghost, Gumroad, Bandcamp, LemonSqueezy, Patreon, } impl_str_enum!(ImportSource { GenericCsv => "generic_csv", Substack => "substack", Ghost => "ghost", Gumroad => "gumroad", Bandcamp => "bandcamp", LemonSqueezy => "lemon_squeezy", Patreon => "patreon", }); #[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)] #[serde(rename_all = "lowercase")] pub enum ImportJobStatus { Pending, Processing, Completed, Failed, } impl_str_enum!(ImportJobStatus { Pending => "pending", Processing => "processing", Completed => "completed", Failed => "failed", }); impl ImportJobStatus { /// Badge vocabulary (charter: `docs/design-system.md`). pub fn badge_status(self) -> crate::types::BadgeStatus { use crate::types::BadgeStatus; match self { Self::Completed => BadgeStatus::Live, Self::Pending | Self::Processing => BadgeStatus::Pending, Self::Failed => BadgeStatus::Failed, } } } // Moderation action types