privchat_protocol/rpc/contact/
friend.rs1use serde::{Deserialize, Serialize};
20
21#[derive(Debug, Clone, Serialize, Deserialize)]
25pub struct FriendApplyRequest {
26 pub target_user_id: u64,
28 #[serde(skip_serializing_if = "Option::is_none")]
30 pub message: Option<String>,
31 #[serde(skip_serializing_if = "Option::is_none")]
33 pub source: Option<String>,
34 #[serde(skip_serializing_if = "Option::is_none")]
36 pub source_id: Option<String>,
37
38 #[serde(skip_deserializing, default)]
40 pub from_user_id: u64,
41}
42
43#[derive(Debug, Clone, Serialize, Deserialize)]
47pub struct FriendAcceptRequest {
48 pub from_user_id: u64,
50 #[serde(skip_serializing_if = "Option::is_none")]
52 pub message: Option<String>,
53
54 #[serde(skip_deserializing, default)]
56 pub target_user_id: u64,
57}
58
59#[derive(Debug, Clone, Serialize, Deserialize)]
63pub struct FriendRejectRequest {
64 pub from_user_id: u64,
66 pub target_user_id: u64,
68 #[serde(skip_serializing_if = "Option::is_none")]
70 pub message: Option<String>,
71}
72
73#[derive(Debug, Clone, Serialize, Deserialize)]
77pub struct FriendPendingRequest {
78 #[serde(skip_deserializing, default)]
80 pub user_id: u64,
81}
82
83#[derive(Debug, Clone, Serialize, Deserialize)]
87pub struct FriendCheckRequest {
88 pub friend_id: u64,
90
91 #[serde(skip_deserializing, default)]
93 pub user_id: u64,
94}
95
96#[derive(Debug, Clone, Serialize, Deserialize)]
100pub struct FriendRemoveRequest {
101 pub friend_id: u64,
103
104 #[serde(skip_deserializing, default)]
106 pub user_id: u64,
107}
108
109#[derive(Debug, Clone, Serialize, Deserialize)]
113pub struct FriendApplyResponse {
114 pub user_id: u64,
115 pub username: String,
116 pub status: String, pub added_at: String, pub message: Option<String>,
119}
120
121pub type FriendAcceptResponse = u64;
126
127pub type FriendRejectResponse = bool;
132
133pub type FriendRemoveResponse = bool;
138
139#[derive(Debug, Clone, Serialize, Deserialize)]
143pub struct FriendCheckResponse {
144 pub is_friend: bool,
145 pub status: Option<String>, }
147
148#[derive(Debug, Clone, Serialize, Deserialize)]
150pub struct FriendPendingItem {
151 pub from_user_id: u64,
152 #[serde(skip_serializing_if = "Option::is_none")]
153 pub message: Option<String>,
154 pub created_at: String,
155}
156
157#[derive(Debug, Clone, Serialize, Deserialize)]
161pub struct FriendPendingResponse {
162 pub requests: Vec<FriendPendingItem>, pub total: usize,
164}