use serde::{Deserialize, Serialize};
use serde_json::Value;
use std::fmt;
#[derive(Debug, Clone, Deserialize, Serialize)]
pub enum TransactionStatus {
#[serde(rename = "SUCCESS")]
Success,
#[serde(rename = "FAILED")]
Failed,
#[serde(rename = "PENDING")]
Pending,
#[serde(rename = "NOT_STARTED")]
NotStarted,
#[serde(rename = "EXPIRED")]
Expired,
#[serde(rename = "CANCELLED")]
Cancelled,
}
impl From<TransactionStatus> for Value {
fn from(val: TransactionStatus) -> Self {
Value::from(val.to_string())
}
}
impl fmt::Display for TransactionStatus {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
match self {
Self::Success => write!(f, "SUCCESS"),
Self::Failed => write!(f, "FAILED"),
Self::Pending => write!(f, "PENDING"),
Self::NotStarted => write!(f, "NOT_STARTED"),
Self::Expired => write!(f, "EXPIRED"),
Self::Cancelled => write!(f, "CANCELLED"),
}
}
}