rust_tdlib/types/
background.rs1use crate::errors::Result;
2use crate::types::*;
3use uuid::Uuid;
4
5#[derive(Debug, Clone, Default, Serialize, Deserialize)]
7pub struct Background {
8 #[doc(hidden)]
9 #[serde(rename(serialize = "@extra", deserialize = "@extra"))]
10 extra: Option<String>,
11 #[serde(rename(serialize = "@client_id", deserialize = "@client_id"))]
12 client_id: Option<i32>,
13 #[serde(
16 deserialize_with = "super::_common::number_from_string",
17 serialize_with = "super::_common::string_to_number"
18 )]
19 #[serde(default)]
20 id: i64,
21 #[serde(default)]
24 is_default: bool,
25 #[serde(default)]
28 is_dark: bool,
29 #[serde(default)]
32 name: String,
33 document: Option<Document>,
35 #[serde(rename(serialize = "type", deserialize = "type"))]
38 #[serde(skip_serializing_if = "BackgroundType::_is_default")]
39 type_: BackgroundType,
40}
41
42impl RObject for Background {
43 #[doc(hidden)]
44 fn extra(&self) -> Option<&str> {
45 self.extra.as_deref()
46 }
47 #[doc(hidden)]
48 fn client_id(&self) -> Option<i32> {
49 self.client_id
50 }
51}
52
53impl Background {
54 pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
55 Ok(serde_json::from_str(json.as_ref())?)
56 }
57 pub fn builder() -> BackgroundBuilder {
58 let mut inner = Background::default();
59 inner.extra = Some(Uuid::new_v4().to_string());
60
61 BackgroundBuilder { inner }
62 }
63
64 pub fn id(&self) -> i64 {
65 self.id
66 }
67
68 pub fn is_default(&self) -> bool {
69 self.is_default
70 }
71
72 pub fn is_dark(&self) -> bool {
73 self.is_dark
74 }
75
76 pub fn name(&self) -> &String {
77 &self.name
78 }
79
80 pub fn document(&self) -> &Option<Document> {
81 &self.document
82 }
83
84 pub fn type_(&self) -> &BackgroundType {
85 &self.type_
86 }
87}
88
89#[doc(hidden)]
90pub struct BackgroundBuilder {
91 inner: Background,
92}
93
94#[deprecated]
95pub type RTDBackgroundBuilder = BackgroundBuilder;
96
97impl BackgroundBuilder {
98 pub fn build(&self) -> Background {
99 self.inner.clone()
100 }
101
102 pub fn id(&mut self, id: i64) -> &mut Self {
103 self.inner.id = id;
104 self
105 }
106
107 pub fn is_default(&mut self, is_default: bool) -> &mut Self {
108 self.inner.is_default = is_default;
109 self
110 }
111
112 pub fn is_dark(&mut self, is_dark: bool) -> &mut Self {
113 self.inner.is_dark = is_dark;
114 self
115 }
116
117 pub fn name<T: AsRef<str>>(&mut self, name: T) -> &mut Self {
118 self.inner.name = name.as_ref().to_string();
119 self
120 }
121
122 pub fn document<T: AsRef<Document>>(&mut self, document: T) -> &mut Self {
123 self.inner.document = Some(document.as_ref().clone());
124 self
125 }
126
127 pub fn type_<T: AsRef<BackgroundType>>(&mut self, type_: T) -> &mut Self {
128 self.inner.type_ = type_.as_ref().clone();
129 self
130 }
131}
132
133impl AsRef<Background> for Background {
134 fn as_ref(&self) -> &Background {
135 self
136 }
137}
138
139impl AsRef<Background> for BackgroundBuilder {
140 fn as_ref(&self) -> &Background {
141 &self.inner
142 }
143}