transdirect/
order.rs

1use std::str::FromStr;
2use serde_derive::{Serialize,Deserialize};
3
4use crate::Error;
5/// Enum describing the status of an order: for member to create a booking
6/// at a later date
7/// 
8/// Defined in the [transdirect API documentation](https://transdirectapiv4.docs.apiary.io/reference/orders/create-orders)
9#[non_exhaustive]
10#[derive(Debug, Eq, PartialEq, Serialize, Deserialize, Default)]
11pub enum OrderStatus {
12    #[default]
13    Pending,
14    Booked,
15    ManuallyDispatched,
16    Cancelled,
17}
18
19impl FromStr for OrderStatus {
20    type Err = Error;
21
22    fn from_str(s: &str) -> Result<Self, Self::Err> {
23        match s {
24            "pending"             => Ok(Self::Pending),
25            "booked"              => Ok(Self::Booked),
26            "manually_dispatched" => Ok(Self::ManuallyDispatched),
27            "cancelled"           => Ok(Self::Cancelled),
28            _ => Err(Self::Err::UnknownStatus)
29        }
30    }
31}