1use crate::client::models;
12use serde::{Deserialize, Serialize};
13
14#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
15pub struct PubSubCommentBase {
16 #[serde(rename = "_id")]
17 pub _id: String,
18 #[serde(rename = "tenantId")]
19 pub tenant_id: String,
20 #[serde(rename = "userId", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
21 pub user_id: Option<Option<String>>,
22 #[serde(rename = "urlId")]
23 pub url_id: String,
24 #[serde(rename = "commenterName")]
25 pub commenter_name: String,
26 #[serde(rename = "commenterLink", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
27 pub commenter_link: Option<Option<String>>,
28 #[serde(rename = "commentHTML")]
29 pub comment_html: String,
30 #[serde(rename = "comment")]
31 pub comment: String,
32 #[serde(rename = "parentId", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
33 pub parent_id: Option<Option<String>>,
34 #[serde(rename = "votes", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
35 pub votes: Option<Option<i32>>,
36 #[serde(rename = "votesUp", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
37 pub votes_up: Option<Option<i32>>,
38 #[serde(rename = "votesDown", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
39 pub votes_down: Option<Option<i32>>,
40 #[serde(rename = "verified")]
41 pub verified: bool,
42 #[serde(rename = "avatarSrc", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
43 pub avatar_src: Option<Option<String>>,
44 #[serde(rename = "hasImages", skip_serializing_if = "Option::is_none")]
45 pub has_images: Option<bool>,
46 #[serde(rename = "hasLinks", skip_serializing_if = "Option::is_none")]
47 pub has_links: Option<bool>,
48 #[serde(rename = "isByAdmin", skip_serializing_if = "Option::is_none")]
49 pub is_by_admin: Option<bool>,
50 #[serde(rename = "isByModerator", skip_serializing_if = "Option::is_none")]
51 pub is_by_moderator: Option<bool>,
52 #[serde(rename = "isPinned", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
53 pub is_pinned: Option<Option<bool>>,
54 #[serde(rename = "isLocked", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
55 pub is_locked: Option<Option<bool>>,
56 #[serde(rename = "displayLabel", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
57 pub display_label: Option<Option<String>>,
58 #[serde(rename = "rating", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
59 pub rating: Option<Option<f64>>,
60 #[serde(rename = "badges", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
61 pub badges: Option<Option<Vec<models::CommentUserBadgeInfo>>>,
62 #[serde(rename = "viewCount", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
63 pub view_count: Option<Option<i64>>,
64 #[serde(rename = "isDeleted", skip_serializing_if = "Option::is_none")]
65 pub is_deleted: Option<bool>,
66 #[serde(rename = "isDeletedUser", skip_serializing_if = "Option::is_none")]
67 pub is_deleted_user: Option<bool>,
68 #[serde(rename = "isSpam", skip_serializing_if = "Option::is_none")]
69 pub is_spam: Option<bool>,
70 #[serde(rename = "anonUserId", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
71 pub anon_user_id: Option<Option<String>>,
72 #[serde(rename = "feedbackIds", skip_serializing_if = "Option::is_none")]
73 pub feedback_ids: Option<Vec<String>>,
74 #[serde(rename = "flagCount", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
75 pub flag_count: Option<Option<i32>>,
76 #[serde(rename = "domain", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
77 pub domain: Option<Option<String>>,
78 #[serde(rename = "url")]
79 pub url: String,
80 #[serde(rename = "pageTitle", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
81 pub page_title: Option<Option<String>>,
82 #[serde(rename = "expireAt", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
83 pub expire_at: Option<Option<String>>,
84 #[serde(rename = "reviewed", skip_serializing_if = "Option::is_none")]
85 pub reviewed: Option<bool>,
86 #[serde(rename = "hasCode", skip_serializing_if = "Option::is_none")]
87 pub has_code: Option<bool>,
88 #[serde(rename = "approved")]
89 pub approved: bool,
90 #[serde(rename = "locale", deserialize_with = "Option::deserialize")]
91 pub locale: Option<String>,
92 #[serde(rename = "isBannedUser", skip_serializing_if = "Option::is_none")]
93 pub is_banned_user: Option<bool>,
94 #[serde(rename = "groupIds", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
95 pub group_ids: Option<Option<Vec<String>>>,
96}
97
98impl PubSubCommentBase {
99 pub fn new(_id: String, tenant_id: String, url_id: String, commenter_name: String, comment_html: String, comment: String, verified: bool, url: String, approved: bool, locale: Option<String>) -> PubSubCommentBase {
100 PubSubCommentBase {
101 _id,
102 tenant_id,
103 user_id: None,
104 url_id,
105 commenter_name,
106 commenter_link: None,
107 comment_html,
108 comment,
109 parent_id: None,
110 votes: None,
111 votes_up: None,
112 votes_down: None,
113 verified,
114 avatar_src: None,
115 has_images: None,
116 has_links: None,
117 is_by_admin: None,
118 is_by_moderator: None,
119 is_pinned: None,
120 is_locked: None,
121 display_label: None,
122 rating: None,
123 badges: None,
124 view_count: None,
125 is_deleted: None,
126 is_deleted_user: None,
127 is_spam: None,
128 anon_user_id: None,
129 feedback_ids: None,
130 flag_count: None,
131 domain: None,
132 url,
133 page_title: None,
134 expire_at: None,
135 reviewed: None,
136 has_code: None,
137 approved,
138 locale,
139 is_banned_user: None,
140 group_ids: None,
141 }
142 }
143}
144