jacquard_api/chat_bsky/actor/
declaration.rs

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: jacquard_common::CowStr<'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<jacquard_common::CowStr<'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<jacquard_common::CowStr<'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/// Typed wrapper for GetRecord response with this collection's record type.
142#[derive(
143    serde::Serialize,
144    serde::Deserialize,
145    Debug,
146    Clone,
147    PartialEq,
148    Eq,
149    jacquard_derive::IntoStatic
150)]
151#[serde(rename_all = "camelCase")]
152pub struct DeclarationGetRecordOutput<'a> {
153    #[serde(skip_serializing_if = "std::option::Option::is_none")]
154    #[serde(borrow)]
155    pub cid: std::option::Option<jacquard_common::types::string::Cid<'a>>,
156    #[serde(borrow)]
157    pub uri: jacquard_common::types::string::AtUri<'a>,
158    #[serde(borrow)]
159    pub value: Declaration<'a>,
160}
161
162impl From<DeclarationGetRecordOutput<'_>> for Declaration<'_> {
163    fn from(output: DeclarationGetRecordOutput<'_>) -> Self {
164        use jacquard_common::IntoStatic;
165        output.value.into_static()
166    }
167}
168
169impl jacquard_common::types::collection::Collection for Declaration<'_> {
170    const NSID: &'static str = "chat.bsky.actor.declaration";
171    type Record = DeclarationRecord;
172}
173
174/// Marker type for deserializing records from this collection.
175#[derive(Debug, serde::Serialize, serde::Deserialize)]
176pub struct DeclarationRecord;
177impl jacquard_common::xrpc::XrpcResp for DeclarationRecord {
178    const NSID: &'static str = "chat.bsky.actor.declaration";
179    const ENCODING: &'static str = "application/json";
180    type Output<'de> = DeclarationGetRecordOutput<'de>;
181    type Err<'de> = jacquard_common::types::collection::RecordError<'de>;
182}
183
184impl jacquard_common::types::collection::Collection for DeclarationRecord {
185    const NSID: &'static str = "chat.bsky.actor.declaration";
186    type Record = DeclarationRecord;
187}
188
189impl<'a> ::jacquard_lexicon::schema::LexiconSchema for Declaration<'a> {
190    fn nsid() -> &'static str {
191        "chat.bsky.actor.declaration"
192    }
193    fn def_name() -> &'static str {
194        "main"
195    }
196    fn lexicon_doc() -> ::jacquard_lexicon::lexicon::LexiconDoc<'static> {
197        lexicon_doc_chat_bsky_actor_declaration()
198    }
199    fn validate(
200        &self,
201    ) -> ::std::result::Result<(), ::jacquard_lexicon::validation::ConstraintError> {
202        Ok(())
203    }
204}
205
206fn lexicon_doc_chat_bsky_actor_declaration() -> ::jacquard_lexicon::lexicon::LexiconDoc<
207    'static,
208> {
209    ::jacquard_lexicon::lexicon::LexiconDoc {
210        lexicon: ::jacquard_lexicon::lexicon::Lexicon::Lexicon1,
211        id: ::jacquard_common::CowStr::new_static("chat.bsky.actor.declaration"),
212        revision: None,
213        description: None,
214        defs: {
215            let mut map = ::std::collections::BTreeMap::new();
216            map.insert(
217                ::jacquard_common::smol_str::SmolStr::new_static("main"),
218                ::jacquard_lexicon::lexicon::LexUserType::Record(::jacquard_lexicon::lexicon::LexRecord {
219                    description: Some(
220                        ::jacquard_common::CowStr::new_static(
221                            "A declaration of a Bluesky chat account.",
222                        ),
223                    ),
224                    key: Some(::jacquard_common::CowStr::new_static("literal:self")),
225                    record: ::jacquard_lexicon::lexicon::LexRecordRecord::Object(::jacquard_lexicon::lexicon::LexObject {
226                        description: None,
227                        required: Some(
228                            vec![
229                                ::jacquard_common::smol_str::SmolStr::new_static("allowIncoming")
230                            ],
231                        ),
232                        nullable: None,
233                        properties: {
234                            #[allow(unused_mut)]
235                            let mut map = ::std::collections::BTreeMap::new();
236                            map.insert(
237                                ::jacquard_common::smol_str::SmolStr::new_static(
238                                    "allowIncoming",
239                                ),
240                                ::jacquard_lexicon::lexicon::LexObjectProperty::String(::jacquard_lexicon::lexicon::LexString {
241                                    description: None,
242                                    format: None,
243                                    default: None,
244                                    min_length: None,
245                                    max_length: None,
246                                    min_graphemes: None,
247                                    max_graphemes: None,
248                                    r#enum: None,
249                                    r#const: None,
250                                    known_values: None,
251                                }),
252                            );
253                            map
254                        },
255                    }),
256                }),
257            );
258            map
259        },
260    }
261}