jacquard_api/chat_bsky/actor/
declaration.rs1#[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 pub trait State: sealed::Sealed {
35 type AllowIncoming;
36 }
37 pub struct Empty(());
39 impl sealed::Sealed for Empty {}
40 impl State for Empty {
41 type AllowIncoming = Unset;
42 }
43 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 #[allow(non_camel_case_types)]
51 pub mod members {
52 pub struct allow_incoming(());
54 }
55}
56
57pub 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 pub fn new() -> DeclarationBuilder<'a, declaration_state::Empty> {
67 DeclarationBuilder::new()
68 }
69}
70
71impl<'a> DeclarationBuilder<'a, declaration_state::Empty> {
72 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 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 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 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(
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#[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}