atproto blogging
1// @generated by jacquard-lexicon. DO NOT EDIT.
2//
3// Lexicon: chat.bsky.actor.declaration
4//
5// This file was automatically generated from Lexicon schemas.
6// Any manual changes will be overwritten on the next regeneration.
7
8/// A declaration of a Bluesky chat account.
9#[jacquard_derive::lexicon]
10#[derive(
11 serde::Serialize,
12 serde::Deserialize,
13 Debug,
14 Clone,
15 PartialEq,
16 Eq,
17 jacquard_derive::IntoStatic
18)]
19#[serde(rename_all = "camelCase")]
20pub struct Declaration<'a> {
21 #[serde(borrow)]
22 pub allow_incoming: DeclarationAllowIncoming<'a>,
23}
24
25pub mod declaration_state {
26
27 pub use crate::builder_types::{Set, Unset, IsSet, IsUnset};
28 #[allow(unused)]
29 use ::core::marker::PhantomData;
30 mod sealed {
31 pub trait Sealed {}
32 }
33 /// State trait tracking which required fields have been set
34 pub trait State: sealed::Sealed {
35 type AllowIncoming;
36 }
37 /// Empty state - all required fields are unset
38 pub struct Empty(());
39 impl sealed::Sealed for Empty {}
40 impl State for Empty {
41 type AllowIncoming = Unset;
42 }
43 ///State transition - sets the `allow_incoming` field to Set
44 pub struct SetAllowIncoming<S: State = Empty>(PhantomData<fn() -> S>);
45 impl<S: State> sealed::Sealed for SetAllowIncoming<S> {}
46 impl<S: State> State for SetAllowIncoming<S> {
47 type AllowIncoming = Set<members::allow_incoming>;
48 }
49 /// Marker types for field names
50 #[allow(non_camel_case_types)]
51 pub mod members {
52 ///Marker type for the `allow_incoming` field
53 pub struct allow_incoming(());
54 }
55}
56
57/// Builder for constructing an instance of this type
58pub struct DeclarationBuilder<'a, S: declaration_state::State> {
59 _phantom_state: ::core::marker::PhantomData<fn() -> S>,
60 __unsafe_private_named: (::core::option::Option<DeclarationAllowIncoming<'a>>,),
61 _phantom: ::core::marker::PhantomData<&'a ()>,
62}
63
64impl<'a> Declaration<'a> {
65 /// Create a new builder for this type
66 pub fn new() -> DeclarationBuilder<'a, declaration_state::Empty> {
67 DeclarationBuilder::new()
68 }
69}
70
71impl<'a> DeclarationBuilder<'a, declaration_state::Empty> {
72 /// Create a new builder with all fields unset
73 pub fn new() -> Self {
74 DeclarationBuilder {
75 _phantom_state: ::core::marker::PhantomData,
76 __unsafe_private_named: (None,),
77 _phantom: ::core::marker::PhantomData,
78 }
79 }
80}
81
82impl<'a, S> DeclarationBuilder<'a, S>
83where
84 S: declaration_state::State,
85 S::AllowIncoming: declaration_state::IsUnset,
86{
87 /// Set the `allowIncoming` field (required)
88 pub fn allow_incoming(
89 mut self,
90 value: impl Into<DeclarationAllowIncoming<'a>>,
91 ) -> DeclarationBuilder<'a, declaration_state::SetAllowIncoming<S>> {
92 self.__unsafe_private_named.0 = ::core::option::Option::Some(value.into());
93 DeclarationBuilder {
94 _phantom_state: ::core::marker::PhantomData,
95 __unsafe_private_named: self.__unsafe_private_named,
96 _phantom: ::core::marker::PhantomData,
97 }
98 }
99}
100
101impl<'a, S> DeclarationBuilder<'a, S>
102where
103 S: declaration_state::State,
104 S::AllowIncoming: declaration_state::IsSet,
105{
106 /// Build the final struct
107 pub fn build(self) -> Declaration<'a> {
108 Declaration {
109 allow_incoming: self.__unsafe_private_named.0.unwrap(),
110 extra_data: Default::default(),
111 }
112 }
113 /// Build the final struct with custom extra_data
114 pub fn build_with_data(
115 self,
116 extra_data: std::collections::BTreeMap<
117 jacquard_common::smol_str::SmolStr,
118 jacquard_common::types::value::Data<'a>,
119 >,
120 ) -> Declaration<'a> {
121 Declaration {
122 allow_incoming: self.__unsafe_private_named.0.unwrap(),
123 extra_data: Some(extra_data),
124 }
125 }
126}
127
128impl<'a> Declaration<'a> {
129 pub fn uri(
130 uri: impl Into<jacquard_common::CowStr<'a>>,
131 ) -> Result<
132 jacquard_common::types::uri::RecordUri<'a, DeclarationRecord>,
133 jacquard_common::types::uri::UriError,
134 > {
135 jacquard_common::types::uri::RecordUri::try_from_uri(
136 jacquard_common::types::string::AtUri::new_cow(uri.into())?,
137 )
138 }
139}
140
141#[derive(Debug, Clone, PartialEq, Eq, Hash)]
142pub enum DeclarationAllowIncoming<'a> {
143 All,
144 None,
145 Following,
146 Other(jacquard_common::CowStr<'a>),
147}
148
149impl<'a> DeclarationAllowIncoming<'a> {
150 pub fn as_str(&self) -> &str {
151 match self {
152 Self::All => "all",
153 Self::None => "none",
154 Self::Following => "following",
155 Self::Other(s) => s.as_ref(),
156 }
157 }
158}
159
160impl<'a> From<&'a str> for DeclarationAllowIncoming<'a> {
161 fn from(s: &'a str) -> Self {
162 match s {
163 "all" => Self::All,
164 "none" => Self::None,
165 "following" => Self::Following,
166 _ => Self::Other(jacquard_common::CowStr::from(s)),
167 }
168 }
169}
170
171impl<'a> From<String> for DeclarationAllowIncoming<'a> {
172 fn from(s: String) -> Self {
173 match s.as_str() {
174 "all" => Self::All,
175 "none" => Self::None,
176 "following" => Self::Following,
177 _ => Self::Other(jacquard_common::CowStr::from(s)),
178 }
179 }
180}
181
182impl<'a> core::fmt::Display for DeclarationAllowIncoming<'a> {
183 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
184 write!(f, "{}", self.as_str())
185 }
186}
187
188impl<'a> AsRef<str> for DeclarationAllowIncoming<'a> {
189 fn as_ref(&self) -> &str {
190 self.as_str()
191 }
192}
193
194impl<'a> serde::Serialize for DeclarationAllowIncoming<'a> {
195 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
196 where
197 S: serde::Serializer,
198 {
199 serializer.serialize_str(self.as_str())
200 }
201}
202
203impl<'de, 'a> serde::Deserialize<'de> for DeclarationAllowIncoming<'a>
204where
205 'de: 'a,
206{
207 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
208 where
209 D: serde::Deserializer<'de>,
210 {
211 let s = <&'de str>::deserialize(deserializer)?;
212 Ok(Self::from(s))
213 }
214}
215
216impl<'a> Default for DeclarationAllowIncoming<'a> {
217 fn default() -> Self {
218 Self::Other(Default::default())
219 }
220}
221
222impl jacquard_common::IntoStatic for DeclarationAllowIncoming<'_> {
223 type Output = DeclarationAllowIncoming<'static>;
224 fn into_static(self) -> Self::Output {
225 match self {
226 DeclarationAllowIncoming::All => DeclarationAllowIncoming::All,
227 DeclarationAllowIncoming::None => DeclarationAllowIncoming::None,
228 DeclarationAllowIncoming::Following => DeclarationAllowIncoming::Following,
229 DeclarationAllowIncoming::Other(v) => {
230 DeclarationAllowIncoming::Other(v.into_static())
231 }
232 }
233 }
234}
235
236/// Typed wrapper for GetRecord response with this collection's record type.
237#[derive(
238 serde::Serialize,
239 serde::Deserialize,
240 Debug,
241 Clone,
242 PartialEq,
243 Eq,
244 jacquard_derive::IntoStatic
245)]
246#[serde(rename_all = "camelCase")]
247pub struct DeclarationGetRecordOutput<'a> {
248 #[serde(skip_serializing_if = "std::option::Option::is_none")]
249 #[serde(borrow)]
250 pub cid: std::option::Option<jacquard_common::types::string::Cid<'a>>,
251 #[serde(borrow)]
252 pub uri: jacquard_common::types::string::AtUri<'a>,
253 #[serde(borrow)]
254 pub value: Declaration<'a>,
255}
256
257impl From<DeclarationGetRecordOutput<'_>> for Declaration<'_> {
258 fn from(output: DeclarationGetRecordOutput<'_>) -> Self {
259 use jacquard_common::IntoStatic;
260 output.value.into_static()
261 }
262}
263
264impl jacquard_common::types::collection::Collection for Declaration<'_> {
265 const NSID: &'static str = "chat.bsky.actor.declaration";
266 type Record = DeclarationRecord;
267}
268
269/// Marker type for deserializing records from this collection.
270#[derive(Debug, serde::Serialize, serde::Deserialize)]
271pub struct DeclarationRecord;
272impl jacquard_common::xrpc::XrpcResp for DeclarationRecord {
273 const NSID: &'static str = "chat.bsky.actor.declaration";
274 const ENCODING: &'static str = "application/json";
275 type Output<'de> = DeclarationGetRecordOutput<'de>;
276 type Err<'de> = jacquard_common::types::collection::RecordError<'de>;
277}
278
279impl jacquard_common::types::collection::Collection for DeclarationRecord {
280 const NSID: &'static str = "chat.bsky.actor.declaration";
281 type Record = DeclarationRecord;
282}
283
284impl<'a> ::jacquard_lexicon::schema::LexiconSchema for Declaration<'a> {
285 fn nsid() -> &'static str {
286 "chat.bsky.actor.declaration"
287 }
288 fn def_name() -> &'static str {
289 "main"
290 }
291 fn lexicon_doc() -> ::jacquard_lexicon::lexicon::LexiconDoc<'static> {
292 lexicon_doc_chat_bsky_actor_declaration()
293 }
294 fn validate(
295 &self,
296 ) -> ::core::result::Result<(), ::jacquard_lexicon::validation::ConstraintError> {
297 Ok(())
298 }
299}
300
301fn lexicon_doc_chat_bsky_actor_declaration() -> ::jacquard_lexicon::lexicon::LexiconDoc<
302 'static,
303> {
304 ::jacquard_lexicon::lexicon::LexiconDoc {
305 lexicon: ::jacquard_lexicon::lexicon::Lexicon::Lexicon1,
306 id: ::jacquard_common::CowStr::new_static("chat.bsky.actor.declaration"),
307 revision: None,
308 description: None,
309 defs: {
310 let mut map = ::alloc::collections::BTreeMap::new();
311 map.insert(
312 ::jacquard_common::smol_str::SmolStr::new_static("main"),
313 ::jacquard_lexicon::lexicon::LexUserType::Record(::jacquard_lexicon::lexicon::LexRecord {
314 description: Some(
315 ::jacquard_common::CowStr::new_static(
316 "A declaration of a Bluesky chat account.",
317 ),
318 ),
319 key: Some(::jacquard_common::CowStr::new_static("literal:self")),
320 record: ::jacquard_lexicon::lexicon::LexRecordRecord::Object(::jacquard_lexicon::lexicon::LexObject {
321 description: None,
322 required: Some(
323 vec![
324 ::jacquard_common::smol_str::SmolStr::new_static("allowIncoming")
325 ],
326 ),
327 nullable: None,
328 properties: {
329 #[allow(unused_mut)]
330 let mut map = ::alloc::collections::BTreeMap::new();
331 map.insert(
332 ::jacquard_common::smol_str::SmolStr::new_static(
333 "allowIncoming",
334 ),
335 ::jacquard_lexicon::lexicon::LexObjectProperty::String(::jacquard_lexicon::lexicon::LexString {
336 description: None,
337 format: None,
338 default: None,
339 min_length: None,
340 max_length: None,
341 min_graphemes: None,
342 max_graphemes: None,
343 r#enum: None,
344 r#const: None,
345 known_values: None,
346 }),
347 );
348 map
349 },
350 }),
351 }),
352 );
353 map
354 },
355 }
356}