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 DouyinSearchType {
Default = 0,
Sales = 1,
Price = 2,
Commission = 3,
CommissionRatio = 4,
}
impl Default for DouyinSearchType {
fn default() -> Self {
DouyinSearchType::Default
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize_repr, Deserialize_repr)]
#[repr(u8)]
pub enum DouyinSortType {
Asc = 0,
Desc = 1,
}
impl Default for DouyinSortType {
fn default() -> Self {
DouyinSortType::Desc
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize_repr, Deserialize_repr)]
#[repr(u8)]
pub enum DouyinProductTag {
All = 0,
SuperValue = 1,
Supermarket = 2,
}
impl Default for DouyinProductTag {
fn default() -> Self {
DouyinProductTag::All
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize_repr, Deserialize_repr)]
#[repr(u8)]
pub enum DouyinShareStatus {
All = 0,
Sharable = 1,
}
impl Default for DouyinShareStatus {
fn default() -> Self {
DouyinShareStatus::All
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize_repr, Deserialize_repr)]
#[repr(u8)]
pub enum DouyinOrderQueryType {
PayTime = 1,
UpdateTime = 2,
OrderId = 3,
}
impl Default for DouyinOrderQueryType {
fn default() -> Self {
DouyinOrderQueryType::PayTime
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize_repr, Deserialize_repr)]
#[repr(u8)]
pub enum DouyinActivityStatus {
Pending = 1,
Active = 2,
Ended = 3,
}
impl Default for DouyinActivityStatus {
fn default() -> Self {
DouyinActivityStatus::Active
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
pub enum DouyinCommandType {
#[serde(rename = "1")]
Product,
#[serde(rename = "2")]
Live,
#[serde(rename = "3")]
Activity,
#[serde(rename = "4")]
Redpack,
}
impl Default for DouyinCommandType {
fn default() -> Self {
DouyinCommandType::Product
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize_repr, Deserialize_repr)]
#[repr(u8)]
pub enum DouyinAuthorType {
Brand = 1,
Creator = 2,
}
impl Default for DouyinAuthorType {
fn default() -> Self {
DouyinAuthorType::Creator
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize_repr, Deserialize_repr)]
#[repr(u8)]
pub enum DouyinAuthorSortBy {
Comprehensive = 1,
Sales = 2,
CommissionRatio = 3,
Followers = 4,
}
impl Default for DouyinAuthorSortBy {
fn default() -> Self {
DouyinAuthorSortBy::Comprehensive
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize_repr, Deserialize_repr)]
#[repr(u8)]
pub enum DouyinLiveStatus {
All = 0,
Live = 1,
Offline = 2,
}
impl Default for DouyinLiveStatus {
fn default() -> Self {
DouyinLiveStatus::All
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_douyin_search_type_serialize() {
let value = DouyinSearchType::Sales;
let json = serde_json::to_string(&value).unwrap();
assert_eq!(json, "1");
}
#[test]
fn test_douyin_search_type_deserialize() {
let value: DouyinSearchType = serde_json::from_str("2").unwrap();
assert_eq!(value, DouyinSearchType::Price);
}
#[test]
fn test_douyin_sort_type_serialize() {
let value = DouyinSortType::Desc;
let json = serde_json::to_string(&value).unwrap();
assert_eq!(json, "1");
}
#[test]
fn test_douyin_product_tag_serialize() {
let value = DouyinProductTag::Supermarket;
let json = serde_json::to_string(&value).unwrap();
assert_eq!(json, "2");
}
#[test]
fn test_douyin_share_status_serialize() {
let value = DouyinShareStatus::Sharable;
let json = serde_json::to_string(&value).unwrap();
assert_eq!(json, "1");
}
#[test]
fn test_douyin_order_query_type_serialize() {
let value = DouyinOrderQueryType::UpdateTime;
let json = serde_json::to_string(&value).unwrap();
assert_eq!(json, "2");
}
#[test]
fn test_douyin_activity_status_serialize() {
let value = DouyinActivityStatus::Active;
let json = serde_json::to_string(&value).unwrap();
assert_eq!(json, "2");
}
#[test]
fn test_douyin_command_type_serialize() {
let value = DouyinCommandType::Live;
let json = serde_json::to_string(&value).unwrap();
assert_eq!(json, "\"2\"");
}
#[test]
fn test_douyin_author_type_serialize() {
let value = DouyinAuthorType::Brand;
let json = serde_json::to_string(&value).unwrap();
assert_eq!(json, "1");
}
#[test]
fn test_douyin_author_sort_by_serialize() {
let value = DouyinAuthorSortBy::Followers;
let json = serde_json::to_string(&value).unwrap();
assert_eq!(json, "4");
}
#[test]
fn test_douyin_live_status_serialize() {
let value = DouyinLiveStatus::Live;
let json = serde_json::to_string(&value).unwrap();
assert_eq!(json, "1");
}
}