use serde::{Serialize, Deserialize};
use serde_json::Value;
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum SupplierOperation {
Search,
GetDetail,
Other(String),
}
impl SupplierOperation {
pub fn normalize(self) -> Self {
match self {
SupplierOperation::Other(s) => {
let normalized = s
.trim()
.to_ascii_lowercase()
.replace([' ', '-', '/'], "_");
SupplierOperation::Other(normalized)
}
other => other,
}
}
pub fn as_str(&self) -> &str {
match self {
SupplierOperation::Search => "search",
SupplierOperation::GetDetail => "get_detail",
SupplierOperation::Other(s) => s.as_str(),
}
}
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct SupplierRequest {
pub operation: SupplierOperation,
pub params: Value,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct SupplierResponse {
pub data: Value,
}