rust_tdlib/types/
venue.rs1use crate::errors::Result;
2use crate::types::*;
3use uuid::Uuid;
4
5#[derive(Debug, Clone, Default, Serialize, Deserialize)]
7pub struct Venue {
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 location: Location,
15 #[serde(default)]
18 title: String,
19 #[serde(default)]
22 address: String,
23 #[serde(default)]
26 provider: String,
27 #[serde(default)]
30 id: String,
31 #[serde(rename(serialize = "type", deserialize = "type"))]
34 #[serde(default)]
35 type_: String,
36}
37
38impl RObject for Venue {
39 #[doc(hidden)]
40 fn extra(&self) -> Option<&str> {
41 self.extra.as_deref()
42 }
43 #[doc(hidden)]
44 fn client_id(&self) -> Option<i32> {
45 self.client_id
46 }
47}
48
49impl Venue {
50 pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
51 Ok(serde_json::from_str(json.as_ref())?)
52 }
53 pub fn builder() -> VenueBuilder {
54 let mut inner = Venue::default();
55 inner.extra = Some(Uuid::new_v4().to_string());
56
57 VenueBuilder { inner }
58 }
59
60 pub fn location(&self) -> &Location {
61 &self.location
62 }
63
64 pub fn title(&self) -> &String {
65 &self.title
66 }
67
68 pub fn address(&self) -> &String {
69 &self.address
70 }
71
72 pub fn provider(&self) -> &String {
73 &self.provider
74 }
75
76 pub fn id(&self) -> &String {
77 &self.id
78 }
79
80 pub fn type_(&self) -> &String {
81 &self.type_
82 }
83}
84
85#[doc(hidden)]
86pub struct VenueBuilder {
87 inner: Venue,
88}
89
90#[deprecated]
91pub type RTDVenueBuilder = VenueBuilder;
92
93impl VenueBuilder {
94 pub fn build(&self) -> Venue {
95 self.inner.clone()
96 }
97
98 pub fn location<T: AsRef<Location>>(&mut self, location: T) -> &mut Self {
99 self.inner.location = location.as_ref().clone();
100 self
101 }
102
103 pub fn title<T: AsRef<str>>(&mut self, title: T) -> &mut Self {
104 self.inner.title = title.as_ref().to_string();
105 self
106 }
107
108 pub fn address<T: AsRef<str>>(&mut self, address: T) -> &mut Self {
109 self.inner.address = address.as_ref().to_string();
110 self
111 }
112
113 pub fn provider<T: AsRef<str>>(&mut self, provider: T) -> &mut Self {
114 self.inner.provider = provider.as_ref().to_string();
115 self
116 }
117
118 pub fn id<T: AsRef<str>>(&mut self, id: T) -> &mut Self {
119 self.inner.id = id.as_ref().to_string();
120 self
121 }
122
123 pub fn type_<T: AsRef<str>>(&mut self, type_: T) -> &mut Self {
124 self.inner.type_ = type_.as_ref().to_string();
125 self
126 }
127}
128
129impl AsRef<Venue> for Venue {
130 fn as_ref(&self) -> &Venue {
131 self
132 }
133}
134
135impl AsRef<Venue> for VenueBuilder {
136 fn as_ref(&self) -> &Venue {
137 &self.inner
138 }
139}