Skip to main content

jacquard_api/chat_bsky/moderation/
get_actor_metadata.rs

1// @generated by jacquard-lexicon. DO NOT EDIT.
2//
3// Lexicon: chat.bsky.moderation.getActorMetadata
4//
5// This file was automatically generated from Lexicon schemas.
6// Any manual changes will be overwritten on the next regeneration.
7
8#[allow(unused_imports)]
9use alloc::collections::BTreeMap;
10
11#[allow(unused_imports)]
12use core::marker::PhantomData;
13
14#[allow(unused_imports)]
15use jacquard_common::deps::codegen::unicode_segmentation::UnicodeSegmentation;
16use jacquard_common::types::string::Did;
17use jacquard_derive::{IntoStatic, lexicon};
18use jacquard_lexicon::lexicon::LexiconDoc;
19use jacquard_lexicon::schema::LexiconSchema;
20
21#[allow(unused_imports)]
22use jacquard_lexicon::validation::{ConstraintError, ValidationPath};
23use serde::{Serialize, Deserialize};
24use crate::chat_bsky::moderation::get_actor_metadata;
25
26#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, IntoStatic)]
27#[serde(rename_all = "camelCase")]
28pub struct GetActorMetadata<'a> {
29    #[serde(borrow)]
30    pub actor: Did<'a>,
31}
32
33
34#[lexicon]
35#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, IntoStatic)]
36#[serde(rename_all = "camelCase")]
37pub struct GetActorMetadataOutput<'a> {
38    #[serde(borrow)]
39    pub all: get_actor_metadata::Metadata<'a>,
40    #[serde(borrow)]
41    pub day: get_actor_metadata::Metadata<'a>,
42    #[serde(borrow)]
43    pub month: get_actor_metadata::Metadata<'a>,
44}
45
46
47#[lexicon]
48#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, IntoStatic)]
49#[serde(rename_all = "camelCase")]
50pub struct Metadata<'a> {
51    pub convos: i64,
52    pub convos_started: i64,
53    pub messages_received: i64,
54    pub messages_sent: i64,
55}
56
57/// Response type for chat.bsky.moderation.getActorMetadata
58pub struct GetActorMetadataResponse;
59impl jacquard_common::xrpc::XrpcResp for GetActorMetadataResponse {
60    const NSID: &'static str = "chat.bsky.moderation.getActorMetadata";
61    const ENCODING: &'static str = "application/json";
62    type Output<'de> = GetActorMetadataOutput<'de>;
63    type Err<'de> = jacquard_common::xrpc::GenericError<'de>;
64}
65
66impl<'a> jacquard_common::xrpc::XrpcRequest for GetActorMetadata<'a> {
67    const NSID: &'static str = "chat.bsky.moderation.getActorMetadata";
68    const METHOD: jacquard_common::xrpc::XrpcMethod = jacquard_common::xrpc::XrpcMethod::Query;
69    type Response = GetActorMetadataResponse;
70}
71
72/// Endpoint type for chat.bsky.moderation.getActorMetadata
73pub struct GetActorMetadataRequest;
74impl jacquard_common::xrpc::XrpcEndpoint for GetActorMetadataRequest {
75    const PATH: &'static str = "/xrpc/chat.bsky.moderation.getActorMetadata";
76    const METHOD: jacquard_common::xrpc::XrpcMethod = jacquard_common::xrpc::XrpcMethod::Query;
77    type Request<'de> = GetActorMetadata<'de>;
78    type Response = GetActorMetadataResponse;
79}
80
81impl<'a> LexiconSchema for Metadata<'a> {
82    fn nsid() -> &'static str {
83        "chat.bsky.moderation.getActorMetadata"
84    }
85    fn def_name() -> &'static str {
86        "metadata"
87    }
88    fn lexicon_doc() -> LexiconDoc<'static> {
89        lexicon_doc_chat_bsky_moderation_getActorMetadata()
90    }
91    fn validate(&self) -> Result<(), ConstraintError> {
92        Ok(())
93    }
94}
95
96pub mod get_actor_metadata_state {
97
98    pub use crate::builder_types::{Set, Unset, IsSet, IsUnset};
99    #[allow(unused)]
100    use ::core::marker::PhantomData;
101    mod sealed {
102        pub trait Sealed {}
103    }
104    /// State trait tracking which required fields have been set
105    pub trait State: sealed::Sealed {
106        type Actor;
107    }
108    /// Empty state - all required fields are unset
109    pub struct Empty(());
110    impl sealed::Sealed for Empty {}
111    impl State for Empty {
112        type Actor = Unset;
113    }
114    ///State transition - sets the `actor` field to Set
115    pub struct SetActor<S: State = Empty>(PhantomData<fn() -> S>);
116    impl<S: State> sealed::Sealed for SetActor<S> {}
117    impl<S: State> State for SetActor<S> {
118        type Actor = Set<members::actor>;
119    }
120    /// Marker types for field names
121    #[allow(non_camel_case_types)]
122    pub mod members {
123        ///Marker type for the `actor` field
124        pub struct actor(());
125    }
126}
127
128/// Builder for constructing an instance of this type
129pub struct GetActorMetadataBuilder<'a, S: get_actor_metadata_state::State> {
130    _state: PhantomData<fn() -> S>,
131    _fields: (Option<Did<'a>>,),
132    _lifetime: PhantomData<&'a ()>,
133}
134
135impl<'a> GetActorMetadata<'a> {
136    /// Create a new builder for this type
137    pub fn new() -> GetActorMetadataBuilder<'a, get_actor_metadata_state::Empty> {
138        GetActorMetadataBuilder::new()
139    }
140}
141
142impl<'a> GetActorMetadataBuilder<'a, get_actor_metadata_state::Empty> {
143    /// Create a new builder with all fields unset
144    pub fn new() -> Self {
145        GetActorMetadataBuilder {
146            _state: PhantomData,
147            _fields: (None,),
148            _lifetime: PhantomData,
149        }
150    }
151}
152
153impl<'a, S> GetActorMetadataBuilder<'a, S>
154where
155    S: get_actor_metadata_state::State,
156    S::Actor: get_actor_metadata_state::IsUnset,
157{
158    /// Set the `actor` field (required)
159    pub fn actor(
160        mut self,
161        value: impl Into<Did<'a>>,
162    ) -> GetActorMetadataBuilder<'a, get_actor_metadata_state::SetActor<S>> {
163        self._fields.0 = Option::Some(value.into());
164        GetActorMetadataBuilder {
165            _state: PhantomData,
166            _fields: self._fields,
167            _lifetime: PhantomData,
168        }
169    }
170}
171
172impl<'a, S> GetActorMetadataBuilder<'a, S>
173where
174    S: get_actor_metadata_state::State,
175    S::Actor: get_actor_metadata_state::IsSet,
176{
177    /// Build the final struct
178    pub fn build(self) -> GetActorMetadata<'a> {
179        GetActorMetadata {
180            actor: self._fields.0.unwrap(),
181        }
182    }
183}
184
185pub mod metadata_state {
186
187    pub use crate::builder_types::{Set, Unset, IsSet, IsUnset};
188    #[allow(unused)]
189    use ::core::marker::PhantomData;
190    mod sealed {
191        pub trait Sealed {}
192    }
193    /// State trait tracking which required fields have been set
194    pub trait State: sealed::Sealed {
195        type Convos;
196        type MessagesSent;
197        type MessagesReceived;
198        type ConvosStarted;
199    }
200    /// Empty state - all required fields are unset
201    pub struct Empty(());
202    impl sealed::Sealed for Empty {}
203    impl State for Empty {
204        type Convos = Unset;
205        type MessagesSent = Unset;
206        type MessagesReceived = Unset;
207        type ConvosStarted = Unset;
208    }
209    ///State transition - sets the `convos` field to Set
210    pub struct SetConvos<S: State = Empty>(PhantomData<fn() -> S>);
211    impl<S: State> sealed::Sealed for SetConvos<S> {}
212    impl<S: State> State for SetConvos<S> {
213        type Convos = Set<members::convos>;
214        type MessagesSent = S::MessagesSent;
215        type MessagesReceived = S::MessagesReceived;
216        type ConvosStarted = S::ConvosStarted;
217    }
218    ///State transition - sets the `messages_sent` field to Set
219    pub struct SetMessagesSent<S: State = Empty>(PhantomData<fn() -> S>);
220    impl<S: State> sealed::Sealed for SetMessagesSent<S> {}
221    impl<S: State> State for SetMessagesSent<S> {
222        type Convos = S::Convos;
223        type MessagesSent = Set<members::messages_sent>;
224        type MessagesReceived = S::MessagesReceived;
225        type ConvosStarted = S::ConvosStarted;
226    }
227    ///State transition - sets the `messages_received` field to Set
228    pub struct SetMessagesReceived<S: State = Empty>(PhantomData<fn() -> S>);
229    impl<S: State> sealed::Sealed for SetMessagesReceived<S> {}
230    impl<S: State> State for SetMessagesReceived<S> {
231        type Convos = S::Convos;
232        type MessagesSent = S::MessagesSent;
233        type MessagesReceived = Set<members::messages_received>;
234        type ConvosStarted = S::ConvosStarted;
235    }
236    ///State transition - sets the `convos_started` field to Set
237    pub struct SetConvosStarted<S: State = Empty>(PhantomData<fn() -> S>);
238    impl<S: State> sealed::Sealed for SetConvosStarted<S> {}
239    impl<S: State> State for SetConvosStarted<S> {
240        type Convos = S::Convos;
241        type MessagesSent = S::MessagesSent;
242        type MessagesReceived = S::MessagesReceived;
243        type ConvosStarted = Set<members::convos_started>;
244    }
245    /// Marker types for field names
246    #[allow(non_camel_case_types)]
247    pub mod members {
248        ///Marker type for the `convos` field
249        pub struct convos(());
250        ///Marker type for the `messages_sent` field
251        pub struct messages_sent(());
252        ///Marker type for the `messages_received` field
253        pub struct messages_received(());
254        ///Marker type for the `convos_started` field
255        pub struct convos_started(());
256    }
257}
258
259/// Builder for constructing an instance of this type
260pub struct MetadataBuilder<'a, S: metadata_state::State> {
261    _state: PhantomData<fn() -> S>,
262    _fields: (Option<i64>, Option<i64>, Option<i64>, Option<i64>),
263    _lifetime: PhantomData<&'a ()>,
264}
265
266impl<'a> Metadata<'a> {
267    /// Create a new builder for this type
268    pub fn new() -> MetadataBuilder<'a, metadata_state::Empty> {
269        MetadataBuilder::new()
270    }
271}
272
273impl<'a> MetadataBuilder<'a, metadata_state::Empty> {
274    /// Create a new builder with all fields unset
275    pub fn new() -> Self {
276        MetadataBuilder {
277            _state: PhantomData,
278            _fields: (None, None, None, None),
279            _lifetime: PhantomData,
280        }
281    }
282}
283
284impl<'a, S> MetadataBuilder<'a, S>
285where
286    S: metadata_state::State,
287    S::Convos: metadata_state::IsUnset,
288{
289    /// Set the `convos` field (required)
290    pub fn convos(
291        mut self,
292        value: impl Into<i64>,
293    ) -> MetadataBuilder<'a, metadata_state::SetConvos<S>> {
294        self._fields.0 = Option::Some(value.into());
295        MetadataBuilder {
296            _state: PhantomData,
297            _fields: self._fields,
298            _lifetime: PhantomData,
299        }
300    }
301}
302
303impl<'a, S> MetadataBuilder<'a, S>
304where
305    S: metadata_state::State,
306    S::ConvosStarted: metadata_state::IsUnset,
307{
308    /// Set the `convosStarted` field (required)
309    pub fn convos_started(
310        mut self,
311        value: impl Into<i64>,
312    ) -> MetadataBuilder<'a, metadata_state::SetConvosStarted<S>> {
313        self._fields.1 = Option::Some(value.into());
314        MetadataBuilder {
315            _state: PhantomData,
316            _fields: self._fields,
317            _lifetime: PhantomData,
318        }
319    }
320}
321
322impl<'a, S> MetadataBuilder<'a, S>
323where
324    S: metadata_state::State,
325    S::MessagesReceived: metadata_state::IsUnset,
326{
327    /// Set the `messagesReceived` field (required)
328    pub fn messages_received(
329        mut self,
330        value: impl Into<i64>,
331    ) -> MetadataBuilder<'a, metadata_state::SetMessagesReceived<S>> {
332        self._fields.2 = Option::Some(value.into());
333        MetadataBuilder {
334            _state: PhantomData,
335            _fields: self._fields,
336            _lifetime: PhantomData,
337        }
338    }
339}
340
341impl<'a, S> MetadataBuilder<'a, S>
342where
343    S: metadata_state::State,
344    S::MessagesSent: metadata_state::IsUnset,
345{
346    /// Set the `messagesSent` field (required)
347    pub fn messages_sent(
348        mut self,
349        value: impl Into<i64>,
350    ) -> MetadataBuilder<'a, metadata_state::SetMessagesSent<S>> {
351        self._fields.3 = Option::Some(value.into());
352        MetadataBuilder {
353            _state: PhantomData,
354            _fields: self._fields,
355            _lifetime: PhantomData,
356        }
357    }
358}
359
360impl<'a, S> MetadataBuilder<'a, S>
361where
362    S: metadata_state::State,
363    S::Convos: metadata_state::IsSet,
364    S::MessagesSent: metadata_state::IsSet,
365    S::MessagesReceived: metadata_state::IsSet,
366    S::ConvosStarted: metadata_state::IsSet,
367{
368    /// Build the final struct
369    pub fn build(self) -> Metadata<'a> {
370        Metadata {
371            convos: self._fields.0.unwrap(),
372            convos_started: self._fields.1.unwrap(),
373            messages_received: self._fields.2.unwrap(),
374            messages_sent: self._fields.3.unwrap(),
375            extra_data: Default::default(),
376        }
377    }
378    /// Build the final struct with custom extra_data
379    pub fn build_with_data(
380        self,
381        extra_data: BTreeMap<
382            jacquard_common::deps::smol_str::SmolStr,
383            jacquard_common::types::value::Data<'a>,
384        >,
385    ) -> Metadata<'a> {
386        Metadata {
387            convos: self._fields.0.unwrap(),
388            convos_started: self._fields.1.unwrap(),
389            messages_received: self._fields.2.unwrap(),
390            messages_sent: self._fields.3.unwrap(),
391            extra_data: Some(extra_data),
392        }
393    }
394}
395
396fn lexicon_doc_chat_bsky_moderation_getActorMetadata() -> LexiconDoc<'static> {
397    #[allow(unused_imports)]
398    use jacquard_common::{CowStr, deps::smol_str::SmolStr, types::blob::MimeType};
399    use jacquard_lexicon::lexicon::*;
400    use alloc::collections::BTreeMap;
401    LexiconDoc {
402        lexicon: Lexicon::Lexicon1,
403        id: CowStr::new_static("chat.bsky.moderation.getActorMetadata"),
404        defs: {
405            let mut map = BTreeMap::new();
406            map.insert(
407                SmolStr::new_static("main"),
408                LexUserType::XrpcQuery(LexXrpcQuery {
409                    parameters: Some(
410                        LexXrpcQueryParameter::Params(LexXrpcParameters {
411                            required: Some(vec![SmolStr::new_static("actor")]),
412                            properties: {
413                                #[allow(unused_mut)]
414                                let mut map = BTreeMap::new();
415                                map.insert(
416                                    SmolStr::new_static("actor"),
417                                    LexXrpcParametersProperty::String(LexString {
418                                        format: Some(LexStringFormat::Did),
419                                        ..Default::default()
420                                    }),
421                                );
422                                map
423                            },
424                            ..Default::default()
425                        }),
426                    ),
427                    ..Default::default()
428                }),
429            );
430            map.insert(
431                SmolStr::new_static("metadata"),
432                LexUserType::Object(LexObject {
433                    required: Some(
434                        vec![
435                            SmolStr::new_static("messagesSent"),
436                            SmolStr::new_static("messagesReceived"),
437                            SmolStr::new_static("convos"),
438                            SmolStr::new_static("convosStarted")
439                        ],
440                    ),
441                    properties: {
442                        #[allow(unused_mut)]
443                        let mut map = BTreeMap::new();
444                        map.insert(
445                            SmolStr::new_static("convos"),
446                            LexObjectProperty::Integer(LexInteger {
447                                ..Default::default()
448                            }),
449                        );
450                        map.insert(
451                            SmolStr::new_static("convosStarted"),
452                            LexObjectProperty::Integer(LexInteger {
453                                ..Default::default()
454                            }),
455                        );
456                        map.insert(
457                            SmolStr::new_static("messagesReceived"),
458                            LexObjectProperty::Integer(LexInteger {
459                                ..Default::default()
460                            }),
461                        );
462                        map.insert(
463                            SmolStr::new_static("messagesSent"),
464                            LexObjectProperty::Integer(LexInteger {
465                                ..Default::default()
466                            }),
467                        );
468                        map
469                    },
470                    ..Default::default()
471                }),
472            );
473            map
474        },
475        ..Default::default()
476    }
477}