use std::str::FromStr;
use crate::domain::Plan;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum DemoData {
Small,
Standard,
Large,
}
const AVAILABLE_DEMO_DATA: &[DemoData] = &[DemoData::Small, DemoData::Standard, DemoData::Large];
const DEFAULT_DEMO_DATA: DemoData = DemoData::Standard;
pub fn default_demo_data() -> DemoData {
DEFAULT_DEMO_DATA
}
pub fn available_demo_data() -> &'static [DemoData] {
AVAILABLE_DEMO_DATA
}
impl DemoData {
pub fn id(self) -> &'static str {
match self {
DemoData::Small => "SMALL",
DemoData::Standard => "STANDARD",
DemoData::Large => "LARGE",
}
}
pub fn default_demo_data() -> Self {
default_demo_data()
}
pub fn available_demo_data() -> &'static [Self] {
available_demo_data()
}
}
impl FromStr for DemoData {
type Err = ();
fn from_str(s: &str) -> Result<Self, Self::Err> {
match s.to_ascii_uppercase().as_str() {
"SMALL" => Ok(DemoData::Small),
"STANDARD" => Ok(DemoData::Standard),
"LARGE" => Ok(DemoData::Large),
_ => Err(()),
}
}
}
pub fn generate(demo: DemoData) -> Plan {
match demo {
DemoData::Small => generate_plan(),
DemoData::Standard => generate_plan(),
DemoData::Large => generate_plan(),
}
}
fn generate_plan() -> Plan {
Plan::new()
}