1#[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
57pub 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
72pub 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 pub trait State: sealed::Sealed {
106 type Actor;
107 }
108 pub struct Empty(());
110 impl sealed::Sealed for Empty {}
111 impl State for Empty {
112 type Actor = Unset;
113 }
114 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 #[allow(non_camel_case_types)]
122 pub mod members {
123 pub struct actor(());
125 }
126}
127
128pub 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 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 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 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 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 pub trait State: sealed::Sealed {
195 type Convos;
196 type MessagesSent;
197 type MessagesReceived;
198 type ConvosStarted;
199 }
200 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 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 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 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 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 #[allow(non_camel_case_types)]
247 pub mod members {
248 pub struct convos(());
250 pub struct messages_sent(());
252 pub struct messages_received(());
254 pub struct convos_started(());
256 }
257}
258
259pub 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 pub fn new() -> MetadataBuilder<'a, metadata_state::Empty> {
269 MetadataBuilder::new()
270 }
271}
272
273impl<'a> MetadataBuilder<'a, metadata_state::Empty> {
274 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 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 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 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 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 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 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}