gewe_core/favorite/
mod.rs1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Serialize)]
4#[serde(rename_all = "camelCase")]
5pub struct SyncFavorRequest<'a> {
6 #[serde(rename = "appId")]
7 pub app_id: &'a str,
8 #[serde(rename = "syncKey", skip_serializing_if = "Option::is_none")]
9 pub sync_key: Option<&'a str>,
10}
11
12#[derive(Debug, Clone, Serialize, Deserialize, Default)]
13#[serde(rename_all = "camelCase")]
14pub struct FavorSummary {
15 #[serde(rename = "favId")]
16 pub fav_id: i64,
17 #[serde(rename = "type")]
18 pub favor_type: i32,
19 pub flag: i32,
20 #[serde(rename = "updateTime")]
21 pub update_time: i64,
22}
23
24#[derive(Debug, Clone, Serialize, Deserialize, Default)]
25#[serde(rename_all = "camelCase")]
26pub struct SyncFavorResponse {
27 #[serde(rename = "syncKey")]
28 pub sync_key: String,
29 pub list: Vec<FavorSummary>,
30}
31
32#[derive(Debug, Clone, Serialize)]
33#[serde(rename_all = "camelCase")]
34pub struct GetFavorContentRequest<'a> {
35 #[serde(rename = "appId")]
36 pub app_id: &'a str,
37 #[serde(rename = "favId")]
38 pub fav_id: i64,
39}
40
41#[derive(Debug, Clone, Serialize, Deserialize, Default)]
42#[serde(rename_all = "camelCase")]
43pub struct GetFavorContentResponse {
44 #[serde(rename = "favId")]
45 pub fav_id: i64,
46 pub status: i32,
47 pub flag: i32,
48 #[serde(rename = "updateTime")]
49 pub update_time: i64,
50 pub content: String,
51}
52
53#[derive(Debug, Clone, Serialize)]
54#[serde(rename_all = "camelCase")]
55pub struct DeleteFavorRequest<'a> {
56 #[serde(rename = "appId")]
57 pub app_id: &'a str,
58 #[serde(rename = "favId")]
59 pub fav_id: i64,
60}
61
62#[cfg(test)]
63mod tests {
64 use super::*;
65
66 #[test]
67 fn test_favor_summary_default() {
68 let summary = FavorSummary::default();
69 assert_eq!(summary.fav_id, 0);
70 assert_eq!(summary.favor_type, 0);
71 assert_eq!(summary.flag, 0);
72 assert_eq!(summary.update_time, 0);
73 }
74
75 #[test]
76 fn test_sync_favor_response_default() {
77 let resp = SyncFavorResponse::default();
78 assert_eq!(resp.sync_key, "");
79 assert!(resp.list.is_empty());
80 }
81
82 #[test]
83 fn test_get_favor_content_response_default() {
84 let resp = GetFavorContentResponse::default();
85 assert_eq!(resp.fav_id, 0);
86 assert_eq!(resp.status, 0);
87 assert_eq!(resp.content, "");
88 }
89
90 #[test]
91 fn test_sync_favor_request_serialization() {
92 let req = SyncFavorRequest {
93 app_id: "test_app",
94 sync_key: Some("sync123"),
95 };
96 let json = serde_json::to_string(&req).unwrap();
97 assert!(json.contains("test_app"));
98 assert!(json.contains("sync123"));
99 }
100
101 #[test]
102 fn test_get_favor_content_request_serialization() {
103 let req = GetFavorContentRequest {
104 app_id: "test_app",
105 fav_id: 123456,
106 };
107 let json = serde_json::to_string(&req).unwrap();
108 assert!(json.contains("test_app"));
109 assert!(json.contains("123456"));
110 }
111
112 #[test]
113 fn test_delete_favor_request_serialization() {
114 let req = DeleteFavorRequest {
115 app_id: "test_app",
116 fav_id: 123456,
117 };
118 let json = serde_json::to_string(&req).unwrap();
119 assert!(json.contains("test_app"));
120 assert!(json.contains("123456"));
121 }
122}