jacquard_api/tools_ozone/
team.rs

1// @generated by jacquard-lexicon. DO NOT EDIT.
2//
3// Lexicon: tools.ozone.team.defs
4//
5// This file was automatically generated from Lexicon schemas.
6// Any manual changes will be overwritten on the next regeneration.
7
8pub mod add_member;
9pub mod delete_member;
10pub mod list_members;
11pub mod update_member;
12
13#[jacquard_derive::lexicon]
14#[derive(
15    serde::Serialize,
16    serde::Deserialize,
17    Debug,
18    Clone,
19    PartialEq,
20    Eq,
21    jacquard_derive::IntoStatic
22)]
23#[serde(rename_all = "camelCase")]
24pub struct Member<'a> {
25    #[serde(skip_serializing_if = "std::option::Option::is_none")]
26    pub created_at: Option<jacquard_common::types::string::Datetime>,
27    #[serde(borrow)]
28    pub did: jacquard_common::types::string::Did<'a>,
29    #[serde(skip_serializing_if = "std::option::Option::is_none")]
30    pub disabled: Option<bool>,
31    #[serde(skip_serializing_if = "std::option::Option::is_none")]
32    #[serde(borrow)]
33    pub last_updated_by: Option<jacquard_common::CowStr<'a>>,
34    #[serde(skip_serializing_if = "std::option::Option::is_none")]
35    #[serde(borrow)]
36    pub profile: Option<crate::app_bsky::actor::ProfileViewDetailed<'a>>,
37    #[serde(borrow)]
38    pub role: jacquard_common::CowStr<'a>,
39    #[serde(skip_serializing_if = "std::option::Option::is_none")]
40    pub updated_at: Option<jacquard_common::types::string::Datetime>,
41}
42
43pub mod member_state {
44
45    pub use crate::builder_types::{Set, Unset, IsSet, IsUnset};
46    #[allow(unused)]
47    use ::core::marker::PhantomData;
48    mod sealed {
49        pub trait Sealed {}
50    }
51    /// State trait tracking which required fields have been set
52    pub trait State: sealed::Sealed {
53        type Did;
54        type Role;
55    }
56    /// Empty state - all required fields are unset
57    pub struct Empty(());
58    impl sealed::Sealed for Empty {}
59    impl State for Empty {
60        type Did = Unset;
61        type Role = Unset;
62    }
63    ///State transition - sets the `did` field to Set
64    pub struct SetDid<S: State = Empty>(PhantomData<fn() -> S>);
65    impl<S: State> sealed::Sealed for SetDid<S> {}
66    impl<S: State> State for SetDid<S> {
67        type Did = Set<members::did>;
68        type Role = S::Role;
69    }
70    ///State transition - sets the `role` field to Set
71    pub struct SetRole<S: State = Empty>(PhantomData<fn() -> S>);
72    impl<S: State> sealed::Sealed for SetRole<S> {}
73    impl<S: State> State for SetRole<S> {
74        type Did = S::Did;
75        type Role = Set<members::role>;
76    }
77    /// Marker types for field names
78    #[allow(non_camel_case_types)]
79    pub mod members {
80        ///Marker type for the `did` field
81        pub struct did(());
82        ///Marker type for the `role` field
83        pub struct role(());
84    }
85}
86
87/// Builder for constructing an instance of this type
88pub struct MemberBuilder<'a, S: member_state::State> {
89    _phantom_state: ::core::marker::PhantomData<fn() -> S>,
90    __unsafe_private_named: (
91        ::core::option::Option<jacquard_common::types::string::Datetime>,
92        ::core::option::Option<jacquard_common::types::string::Did<'a>>,
93        ::core::option::Option<bool>,
94        ::core::option::Option<jacquard_common::CowStr<'a>>,
95        ::core::option::Option<crate::app_bsky::actor::ProfileViewDetailed<'a>>,
96        ::core::option::Option<jacquard_common::CowStr<'a>>,
97        ::core::option::Option<jacquard_common::types::string::Datetime>,
98    ),
99    _phantom: ::core::marker::PhantomData<&'a ()>,
100}
101
102impl<'a> Member<'a> {
103    /// Create a new builder for this type
104    pub fn new() -> MemberBuilder<'a, member_state::Empty> {
105        MemberBuilder::new()
106    }
107}
108
109impl<'a> MemberBuilder<'a, member_state::Empty> {
110    /// Create a new builder with all fields unset
111    pub fn new() -> Self {
112        MemberBuilder {
113            _phantom_state: ::core::marker::PhantomData,
114            __unsafe_private_named: (None, None, None, None, None, None, None),
115            _phantom: ::core::marker::PhantomData,
116        }
117    }
118}
119
120impl<'a, S: member_state::State> MemberBuilder<'a, S> {
121    /// Set the `createdAt` field (optional)
122    pub fn created_at(
123        mut self,
124        value: impl Into<Option<jacquard_common::types::string::Datetime>>,
125    ) -> Self {
126        self.__unsafe_private_named.0 = value.into();
127        self
128    }
129    /// Set the `createdAt` field to an Option value (optional)
130    pub fn maybe_created_at(
131        mut self,
132        value: Option<jacquard_common::types::string::Datetime>,
133    ) -> Self {
134        self.__unsafe_private_named.0 = value;
135        self
136    }
137}
138
139impl<'a, S> MemberBuilder<'a, S>
140where
141    S: member_state::State,
142    S::Did: member_state::IsUnset,
143{
144    /// Set the `did` field (required)
145    pub fn did(
146        mut self,
147        value: impl Into<jacquard_common::types::string::Did<'a>>,
148    ) -> MemberBuilder<'a, member_state::SetDid<S>> {
149        self.__unsafe_private_named.1 = ::core::option::Option::Some(value.into());
150        MemberBuilder {
151            _phantom_state: ::core::marker::PhantomData,
152            __unsafe_private_named: self.__unsafe_private_named,
153            _phantom: ::core::marker::PhantomData,
154        }
155    }
156}
157
158impl<'a, S: member_state::State> MemberBuilder<'a, S> {
159    /// Set the `disabled` field (optional)
160    pub fn disabled(mut self, value: impl Into<Option<bool>>) -> Self {
161        self.__unsafe_private_named.2 = value.into();
162        self
163    }
164    /// Set the `disabled` field to an Option value (optional)
165    pub fn maybe_disabled(mut self, value: Option<bool>) -> Self {
166        self.__unsafe_private_named.2 = value;
167        self
168    }
169}
170
171impl<'a, S: member_state::State> MemberBuilder<'a, S> {
172    /// Set the `lastUpdatedBy` field (optional)
173    pub fn last_updated_by(
174        mut self,
175        value: impl Into<Option<jacquard_common::CowStr<'a>>>,
176    ) -> Self {
177        self.__unsafe_private_named.3 = value.into();
178        self
179    }
180    /// Set the `lastUpdatedBy` field to an Option value (optional)
181    pub fn maybe_last_updated_by(
182        mut self,
183        value: Option<jacquard_common::CowStr<'a>>,
184    ) -> Self {
185        self.__unsafe_private_named.3 = value;
186        self
187    }
188}
189
190impl<'a, S: member_state::State> MemberBuilder<'a, S> {
191    /// Set the `profile` field (optional)
192    pub fn profile(
193        mut self,
194        value: impl Into<Option<crate::app_bsky::actor::ProfileViewDetailed<'a>>>,
195    ) -> Self {
196        self.__unsafe_private_named.4 = value.into();
197        self
198    }
199    /// Set the `profile` field to an Option value (optional)
200    pub fn maybe_profile(
201        mut self,
202        value: Option<crate::app_bsky::actor::ProfileViewDetailed<'a>>,
203    ) -> Self {
204        self.__unsafe_private_named.4 = value;
205        self
206    }
207}
208
209impl<'a, S> MemberBuilder<'a, S>
210where
211    S: member_state::State,
212    S::Role: member_state::IsUnset,
213{
214    /// Set the `role` field (required)
215    pub fn role(
216        mut self,
217        value: impl Into<jacquard_common::CowStr<'a>>,
218    ) -> MemberBuilder<'a, member_state::SetRole<S>> {
219        self.__unsafe_private_named.5 = ::core::option::Option::Some(value.into());
220        MemberBuilder {
221            _phantom_state: ::core::marker::PhantomData,
222            __unsafe_private_named: self.__unsafe_private_named,
223            _phantom: ::core::marker::PhantomData,
224        }
225    }
226}
227
228impl<'a, S: member_state::State> MemberBuilder<'a, S> {
229    /// Set the `updatedAt` field (optional)
230    pub fn updated_at(
231        mut self,
232        value: impl Into<Option<jacquard_common::types::string::Datetime>>,
233    ) -> Self {
234        self.__unsafe_private_named.6 = value.into();
235        self
236    }
237    /// Set the `updatedAt` field to an Option value (optional)
238    pub fn maybe_updated_at(
239        mut self,
240        value: Option<jacquard_common::types::string::Datetime>,
241    ) -> Self {
242        self.__unsafe_private_named.6 = value;
243        self
244    }
245}
246
247impl<'a, S> MemberBuilder<'a, S>
248where
249    S: member_state::State,
250    S::Did: member_state::IsSet,
251    S::Role: member_state::IsSet,
252{
253    /// Build the final struct
254    pub fn build(self) -> Member<'a> {
255        Member {
256            created_at: self.__unsafe_private_named.0,
257            did: self.__unsafe_private_named.1.unwrap(),
258            disabled: self.__unsafe_private_named.2,
259            last_updated_by: self.__unsafe_private_named.3,
260            profile: self.__unsafe_private_named.4,
261            role: self.__unsafe_private_named.5.unwrap(),
262            updated_at: self.__unsafe_private_named.6,
263            extra_data: Default::default(),
264        }
265    }
266    /// Build the final struct with custom extra_data
267    pub fn build_with_data(
268        self,
269        extra_data: std::collections::BTreeMap<
270            jacquard_common::smol_str::SmolStr,
271            jacquard_common::types::value::Data<'a>,
272        >,
273    ) -> Member<'a> {
274        Member {
275            created_at: self.__unsafe_private_named.0,
276            did: self.__unsafe_private_named.1.unwrap(),
277            disabled: self.__unsafe_private_named.2,
278            last_updated_by: self.__unsafe_private_named.3,
279            profile: self.__unsafe_private_named.4,
280            role: self.__unsafe_private_named.5.unwrap(),
281            updated_at: self.__unsafe_private_named.6,
282            extra_data: Some(extra_data),
283        }
284    }
285}
286
287fn lexicon_doc_tools_ozone_team_defs() -> ::jacquard_lexicon::lexicon::LexiconDoc<
288    'static,
289> {
290    ::jacquard_lexicon::lexicon::LexiconDoc {
291        lexicon: ::jacquard_lexicon::lexicon::Lexicon::Lexicon1,
292        id: ::jacquard_common::CowStr::new_static("tools.ozone.team.defs"),
293        revision: None,
294        description: None,
295        defs: {
296            let mut map = ::std::collections::BTreeMap::new();
297            map.insert(
298                ::jacquard_common::smol_str::SmolStr::new_static("member"),
299                ::jacquard_lexicon::lexicon::LexUserType::Object(::jacquard_lexicon::lexicon::LexObject {
300                    description: None,
301                    required: Some(
302                        vec![
303                            ::jacquard_common::smol_str::SmolStr::new_static("did"),
304                            ::jacquard_common::smol_str::SmolStr::new_static("role")
305                        ],
306                    ),
307                    nullable: None,
308                    properties: {
309                        #[allow(unused_mut)]
310                        let mut map = ::std::collections::BTreeMap::new();
311                        map.insert(
312                            ::jacquard_common::smol_str::SmolStr::new_static(
313                                "createdAt",
314                            ),
315                            ::jacquard_lexicon::lexicon::LexObjectProperty::String(::jacquard_lexicon::lexicon::LexString {
316                                description: None,
317                                format: Some(
318                                    ::jacquard_lexicon::lexicon::LexStringFormat::Datetime,
319                                ),
320                                default: None,
321                                min_length: None,
322                                max_length: None,
323                                min_graphemes: None,
324                                max_graphemes: None,
325                                r#enum: None,
326                                r#const: None,
327                                known_values: None,
328                            }),
329                        );
330                        map.insert(
331                            ::jacquard_common::smol_str::SmolStr::new_static("did"),
332                            ::jacquard_lexicon::lexicon::LexObjectProperty::String(::jacquard_lexicon::lexicon::LexString {
333                                description: None,
334                                format: Some(
335                                    ::jacquard_lexicon::lexicon::LexStringFormat::Did,
336                                ),
337                                default: None,
338                                min_length: None,
339                                max_length: None,
340                                min_graphemes: None,
341                                max_graphemes: None,
342                                r#enum: None,
343                                r#const: None,
344                                known_values: None,
345                            }),
346                        );
347                        map.insert(
348                            ::jacquard_common::smol_str::SmolStr::new_static("disabled"),
349                            ::jacquard_lexicon::lexicon::LexObjectProperty::Boolean(::jacquard_lexicon::lexicon::LexBoolean {
350                                description: None,
351                                default: None,
352                                r#const: None,
353                            }),
354                        );
355                        map.insert(
356                            ::jacquard_common::smol_str::SmolStr::new_static(
357                                "lastUpdatedBy",
358                            ),
359                            ::jacquard_lexicon::lexicon::LexObjectProperty::String(::jacquard_lexicon::lexicon::LexString {
360                                description: None,
361                                format: None,
362                                default: None,
363                                min_length: None,
364                                max_length: None,
365                                min_graphemes: None,
366                                max_graphemes: None,
367                                r#enum: None,
368                                r#const: None,
369                                known_values: None,
370                            }),
371                        );
372                        map.insert(
373                            ::jacquard_common::smol_str::SmolStr::new_static("profile"),
374                            ::jacquard_lexicon::lexicon::LexObjectProperty::Ref(::jacquard_lexicon::lexicon::LexRef {
375                                description: None,
376                                r#ref: ::jacquard_common::CowStr::new_static(
377                                    "app.bsky.actor.defs#profileViewDetailed",
378                                ),
379                            }),
380                        );
381                        map.insert(
382                            ::jacquard_common::smol_str::SmolStr::new_static("role"),
383                            ::jacquard_lexicon::lexicon::LexObjectProperty::String(::jacquard_lexicon::lexicon::LexString {
384                                description: None,
385                                format: None,
386                                default: None,
387                                min_length: None,
388                                max_length: None,
389                                min_graphemes: None,
390                                max_graphemes: None,
391                                r#enum: None,
392                                r#const: None,
393                                known_values: None,
394                            }),
395                        );
396                        map.insert(
397                            ::jacquard_common::smol_str::SmolStr::new_static(
398                                "updatedAt",
399                            ),
400                            ::jacquard_lexicon::lexicon::LexObjectProperty::String(::jacquard_lexicon::lexicon::LexString {
401                                description: None,
402                                format: Some(
403                                    ::jacquard_lexicon::lexicon::LexStringFormat::Datetime,
404                                ),
405                                default: None,
406                                min_length: None,
407                                max_length: None,
408                                min_graphemes: None,
409                                max_graphemes: None,
410                                r#enum: None,
411                                r#const: None,
412                                known_values: None,
413                            }),
414                        );
415                        map
416                    },
417                }),
418            );
419            map.insert(
420                ::jacquard_common::smol_str::SmolStr::new_static("roleAdmin"),
421                ::jacquard_lexicon::lexicon::LexUserType::Token(::jacquard_lexicon::lexicon::LexToken {
422                    description: None,
423                }),
424            );
425            map.insert(
426                ::jacquard_common::smol_str::SmolStr::new_static("roleModerator"),
427                ::jacquard_lexicon::lexicon::LexUserType::Token(::jacquard_lexicon::lexicon::LexToken {
428                    description: None,
429                }),
430            );
431            map.insert(
432                ::jacquard_common::smol_str::SmolStr::new_static("roleTriage"),
433                ::jacquard_lexicon::lexicon::LexUserType::Token(::jacquard_lexicon::lexicon::LexToken {
434                    description: None,
435                }),
436            );
437            map.insert(
438                ::jacquard_common::smol_str::SmolStr::new_static("roleVerifier"),
439                ::jacquard_lexicon::lexicon::LexUserType::Token(::jacquard_lexicon::lexicon::LexToken {
440                    description: None,
441                }),
442            );
443            map
444        },
445    }
446}
447
448impl<'a> ::jacquard_lexicon::schema::LexiconSchema for Member<'a> {
449    fn nsid() -> &'static str {
450        "tools.ozone.team.defs"
451    }
452    fn def_name() -> &'static str {
453        "member"
454    }
455    fn lexicon_doc() -> ::jacquard_lexicon::lexicon::LexiconDoc<'static> {
456        lexicon_doc_tools_ozone_team_defs()
457    }
458    fn validate(
459        &self,
460    ) -> ::std::result::Result<(), ::jacquard_lexicon::validation::ConstraintError> {
461        Ok(())
462    }
463}
464
465/// Admin role. Highest level of access, can perform all actions.
466#[derive(
467    serde::Serialize,
468    serde::Deserialize,
469    Debug,
470    Clone,
471    PartialEq,
472    Eq,
473    Hash,
474    jacquard_derive::IntoStatic
475)]
476pub struct RoleAdmin;
477impl std::fmt::Display for RoleAdmin {
478    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
479        write!(f, "roleAdmin")
480    }
481}
482
483/// Moderator role. Can perform most actions.
484#[derive(
485    serde::Serialize,
486    serde::Deserialize,
487    Debug,
488    Clone,
489    PartialEq,
490    Eq,
491    Hash,
492    jacquard_derive::IntoStatic
493)]
494pub struct RoleModerator;
495impl std::fmt::Display for RoleModerator {
496    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
497        write!(f, "roleModerator")
498    }
499}
500
501/// Triage role. Mostly intended for monitoring and escalating issues.
502#[derive(
503    serde::Serialize,
504    serde::Deserialize,
505    Debug,
506    Clone,
507    PartialEq,
508    Eq,
509    Hash,
510    jacquard_derive::IntoStatic
511)]
512pub struct RoleTriage;
513impl std::fmt::Display for RoleTriage {
514    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
515        write!(f, "roleTriage")
516    }
517}
518
519/// Verifier role. Only allowed to issue verifications.
520#[derive(
521    serde::Serialize,
522    serde::Deserialize,
523    Debug,
524    Clone,
525    PartialEq,
526    Eq,
527    Hash,
528    jacquard_derive::IntoStatic
529)]
530pub struct RoleVerifier;
531impl std::fmt::Display for RoleVerifier {
532    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
533        write!(f, "roleVerifier")
534    }
535}