import gleam/dynamic/decode.{type Decoder} import utils/decode as decode_utils pub type ShipNavStatus { InTransit InOrbit Docked } pub fn to_string(ship_nav_status: ShipNavStatus) -> String { case ship_nav_status { InTransit -> "IN_TRANSIT" InOrbit -> "IN_ORBIT" Docked -> "DOCKED" } } pub fn parse( ship_nav_status_str: String, ) -> Result(ShipNavStatus, ShipNavStatus) { case ship_nav_status_str { "IN_TRANSIT" -> Ok(InTransit) "IN_ORBIT" -> Ok(InOrbit) "DOCKED" -> Ok(Docked) _ -> Error(InTransit) } } pub fn decoder() -> Decoder(ShipNavStatus) { decode_utils.enum_decoder(parse, "ShipNavStatus") }