use serde::{Deserialize, Serialize};
use serde_repr::{Deserialize_repr, Serialize_repr};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize_repr, Deserialize_repr)]
#[repr(u8)]
pub enum SignUrlType {
Official = 0,
Official1 = 1,
Official2 = 2,
WithParse = 3,
WithSimpleDetail = 4,
WithFullDetail = 5,
}
impl Default for SignUrlType {
fn default() -> Self {
SignUrlType::Official
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize_repr, Deserialize_repr)]
#[repr(u8)]
pub enum ChainType {
Long = 1,
Short = 2,
Both = 3,
}
impl Default for ChainType {
fn default() -> Self {
ChainType::Long
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "lowercase")]
pub enum SortDirection {
Asc,
Desc,
}
impl Default for SortDirection {
fn default() -> Self {
SortDirection::Desc
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize_repr, Deserialize_repr)]
#[repr(u32)]
pub enum JdEliteId {
GoodCoupon = 1,
Selected = 2,
NineNine = 10,
JdDelivery = 15,
HotSale = 22,
Recommend = 23,
Digital = 24,
Supermarket = 25,
Baby = 26,
Home = 27,
Beauty = 28,
Book = 30,
TodayMust = 31,
JdGood = 32,
Seckill = 33,
Pingou = 34,
HighProfit = 40,
SelfHot = 41,
SeckillNow = 108,
NewProduct = 109,
SelfOperated = 110,
JdHot = 112,
FirstBuy = 125,
HighCommission = 129,
Video = 130,
LowestPrice = 153,
}
impl Default for JdEliteId {
fn default() -> Self {
JdEliteId::GoodCoupon
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub enum JdSortField {
Price,
CommissionShare,
Commission,
InOrderCount30DaysSku,
Comments,
GoodComments,
}
impl Default for JdSortField {
fn default() -> Self {
JdSortField::InOrderCount30DaysSku
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize_repr, Deserialize_repr)]
#[repr(u8)]
pub enum OrderQueryType {
OrderTime = 1,
FinishTime = 2,
UpdateTime = 3,
}
impl Default for OrderQueryType {
fn default() -> Self {
OrderQueryType::OrderTime
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize_repr, Deserialize_repr)]
#[repr(u8)]
pub enum ShopType {
Taobao = 0,
Tmall = 1,
}
impl Default for ShopType {
fn default() -> Self {
ShopType::Taobao
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_sign_url_type_serialize() {
let value = SignUrlType::WithFullDetail;
let json = serde_json::to_string(&value).unwrap();
assert_eq!(json, "5");
}
#[test]
fn test_sign_url_type_deserialize() {
let value: SignUrlType = serde_json::from_str("3").unwrap();
assert_eq!(value, SignUrlType::WithParse);
}
#[test]
fn test_chain_type_serialize() {
let value = ChainType::Short;
let json = serde_json::to_string(&value).unwrap();
assert_eq!(json, "2");
}
#[test]
fn test_chain_type_deserialize() {
let value: ChainType = serde_json::from_str("1").unwrap();
assert_eq!(value, ChainType::Long);
}
#[test]
fn test_sort_direction_serialize() {
let value = SortDirection::Asc;
let json = serde_json::to_string(&value).unwrap();
assert_eq!(json, "\"asc\"");
}
#[test]
fn test_sort_direction_deserialize() {
let value: SortDirection = serde_json::from_str("\"desc\"").unwrap();
assert_eq!(value, SortDirection::Desc);
}
#[test]
fn test_jd_elite_id_serialize() {
let value = JdEliteId::HotSale;
let json = serde_json::to_string(&value).unwrap();
assert_eq!(json, "22");
}
#[test]
fn test_jd_elite_id_deserialize() {
let value: JdEliteId = serde_json::from_str("33").unwrap();
assert_eq!(value, JdEliteId::Seckill);
}
#[test]
fn test_jd_sort_field_serialize() {
let value = JdSortField::CommissionShare;
let json = serde_json::to_string(&value).unwrap();
assert_eq!(json, "\"commissionShare\"");
}
#[test]
fn test_order_query_type_serialize() {
let value = OrderQueryType::UpdateTime;
let json = serde_json::to_string(&value).unwrap();
assert_eq!(json, "3");
}
#[test]
fn test_shop_type_serialize() {
let value = ShopType::Tmall;
let json = serde_json::to_string(&value).unwrap();
assert_eq!(json, "1");
}
}