nautilus-orm-codegen 1.0.1

Code generator for Nautilus ORM schema files
Documentation
---
source: crates/nautilus-codegen/tests/snapshot_tests.rs
assertion_line: 106
expression: enums_code
---
//! Generated enum types.

/// Status enum.
#[derive(Debug, Clone, Copy, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
pub enum Status {
    ACTIVE,
    INACTIVE,
    PENDING,
}

impl nautilus_core::FromValue for Status {
    fn from_value(value: &nautilus_core::Value) -> nautilus_core::Result<Self> {
        match value {
            nautilus_core::Value::String(s) => match s.as_str() {
                "ACTIVE" => Ok(Status::ACTIVE),
                "INACTIVE" => Ok(Status::INACTIVE),
                "PENDING" => Ok(Status::PENDING),
                other => Err(nautilus_core::Error::TypeError(
                    format!("Invalid Status variant: {}", other)
                )),
            },
            nautilus_core::Value::Null => Err(nautilus_core::Error::TypeError(
                "NULL value for Status".to_string()
            )),
            _ => Err(nautilus_core::Error::TypeError(format!(
                "expected String for Status, got {:?}", value
            ))),
        }
    }
}

impl From<Status> for nautilus_core::Value {
    fn from(e: Status) -> Self {
        match e {
            Status::ACTIVE => nautilus_core::Value::String("ACTIVE".to_string()),
            Status::INACTIVE => nautilus_core::Value::String("INACTIVE".to_string()),
            Status::PENDING => nautilus_core::Value::String("PENDING".to_string()),
        }
    }
}