gewe_core/favorite/
mod.rs

1use 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}