atproto blogging
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: std::option::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: std::option::Option<bool>,
31 #[serde(skip_serializing_if = "std::option::Option::is_none")]
32 #[serde(borrow)]
33 pub last_updated_by: std::option::Option<jacquard_common::CowStr<'a>>,
34 #[serde(skip_serializing_if = "std::option::Option::is_none")]
35 #[serde(borrow)]
36 pub profile: std::option::Option<crate::app_bsky::actor::ProfileViewDetailed<'a>>,
37 #[serde(borrow)]
38 pub role: MemberRole<'a>,
39 #[serde(skip_serializing_if = "std::option::Option::is_none")]
40 pub updated_at: std::option::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 Role;
54 type Did;
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 Role = Unset;
61 type Did = Unset;
62 }
63 ///State transition - sets the `role` field to Set
64 pub struct SetRole<S: State = Empty>(PhantomData<fn() -> S>);
65 impl<S: State> sealed::Sealed for SetRole<S> {}
66 impl<S: State> State for SetRole<S> {
67 type Role = Set<members::role>;
68 type Did = S::Did;
69 }
70 ///State transition - sets the `did` field to Set
71 pub struct SetDid<S: State = Empty>(PhantomData<fn() -> S>);
72 impl<S: State> sealed::Sealed for SetDid<S> {}
73 impl<S: State> State for SetDid<S> {
74 type Role = S::Role;
75 type Did = Set<members::did>;
76 }
77 /// Marker types for field names
78 #[allow(non_camel_case_types)]
79 pub mod members {
80 ///Marker type for the `role` field
81 pub struct role(());
82 ///Marker type for the `did` field
83 pub struct did(());
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<MemberRole<'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<MemberRole<'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::Role: member_state::IsSet,
251 S::Did: 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
287#[derive(Debug, Clone, PartialEq, Eq, Hash)]
288pub enum MemberRole<'a> {
289 RoleAdmin,
290 RoleModerator,
291 RoleTriage,
292 RoleVerifier,
293 Other(jacquard_common::CowStr<'a>),
294}
295
296impl<'a> MemberRole<'a> {
297 pub fn as_str(&self) -> &str {
298 match self {
299 Self::RoleAdmin => "tools.ozone.team.defs#roleAdmin",
300 Self::RoleModerator => "tools.ozone.team.defs#roleModerator",
301 Self::RoleTriage => "tools.ozone.team.defs#roleTriage",
302 Self::RoleVerifier => "tools.ozone.team.defs#roleVerifier",
303 Self::Other(s) => s.as_ref(),
304 }
305 }
306}
307
308impl<'a> From<&'a str> for MemberRole<'a> {
309 fn from(s: &'a str) -> Self {
310 match s {
311 "tools.ozone.team.defs#roleAdmin" => Self::RoleAdmin,
312 "tools.ozone.team.defs#roleModerator" => Self::RoleModerator,
313 "tools.ozone.team.defs#roleTriage" => Self::RoleTriage,
314 "tools.ozone.team.defs#roleVerifier" => Self::RoleVerifier,
315 _ => Self::Other(jacquard_common::CowStr::from(s)),
316 }
317 }
318}
319
320impl<'a> From<String> for MemberRole<'a> {
321 fn from(s: String) -> Self {
322 match s.as_str() {
323 "tools.ozone.team.defs#roleAdmin" => Self::RoleAdmin,
324 "tools.ozone.team.defs#roleModerator" => Self::RoleModerator,
325 "tools.ozone.team.defs#roleTriage" => Self::RoleTriage,
326 "tools.ozone.team.defs#roleVerifier" => Self::RoleVerifier,
327 _ => Self::Other(jacquard_common::CowStr::from(s)),
328 }
329 }
330}
331
332impl<'a> core::fmt::Display for MemberRole<'a> {
333 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
334 write!(f, "{}", self.as_str())
335 }
336}
337
338impl<'a> AsRef<str> for MemberRole<'a> {
339 fn as_ref(&self) -> &str {
340 self.as_str()
341 }
342}
343
344impl<'a> serde::Serialize for MemberRole<'a> {
345 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
346 where
347 S: serde::Serializer,
348 {
349 serializer.serialize_str(self.as_str())
350 }
351}
352
353impl<'de, 'a> serde::Deserialize<'de> for MemberRole<'a>
354where
355 'de: 'a,
356{
357 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
358 where
359 D: serde::Deserializer<'de>,
360 {
361 let s = <&'de str>::deserialize(deserializer)?;
362 Ok(Self::from(s))
363 }
364}
365
366impl<'a> Default for MemberRole<'a> {
367 fn default() -> Self {
368 Self::Other(Default::default())
369 }
370}
371
372impl jacquard_common::IntoStatic for MemberRole<'_> {
373 type Output = MemberRole<'static>;
374 fn into_static(self) -> Self::Output {
375 match self {
376 MemberRole::RoleAdmin => MemberRole::RoleAdmin,
377 MemberRole::RoleModerator => MemberRole::RoleModerator,
378 MemberRole::RoleTriage => MemberRole::RoleTriage,
379 MemberRole::RoleVerifier => MemberRole::RoleVerifier,
380 MemberRole::Other(v) => MemberRole::Other(v.into_static()),
381 }
382 }
383}
384
385fn lexicon_doc_tools_ozone_team_defs() -> ::jacquard_lexicon::lexicon::LexiconDoc<
386 'static,
387> {
388 ::jacquard_lexicon::lexicon::LexiconDoc {
389 lexicon: ::jacquard_lexicon::lexicon::Lexicon::Lexicon1,
390 id: ::jacquard_common::CowStr::new_static("tools.ozone.team.defs"),
391 revision: None,
392 description: None,
393 defs: {
394 let mut map = ::alloc::collections::BTreeMap::new();
395 map.insert(
396 ::jacquard_common::smol_str::SmolStr::new_static("member"),
397 ::jacquard_lexicon::lexicon::LexUserType::Object(::jacquard_lexicon::lexicon::LexObject {
398 description: None,
399 required: Some(
400 vec![
401 ::jacquard_common::smol_str::SmolStr::new_static("did"),
402 ::jacquard_common::smol_str::SmolStr::new_static("role")
403 ],
404 ),
405 nullable: None,
406 properties: {
407 #[allow(unused_mut)]
408 let mut map = ::alloc::collections::BTreeMap::new();
409 map.insert(
410 ::jacquard_common::smol_str::SmolStr::new_static(
411 "createdAt",
412 ),
413 ::jacquard_lexicon::lexicon::LexObjectProperty::String(::jacquard_lexicon::lexicon::LexString {
414 description: None,
415 format: Some(
416 ::jacquard_lexicon::lexicon::LexStringFormat::Datetime,
417 ),
418 default: None,
419 min_length: None,
420 max_length: None,
421 min_graphemes: None,
422 max_graphemes: None,
423 r#enum: None,
424 r#const: None,
425 known_values: None,
426 }),
427 );
428 map.insert(
429 ::jacquard_common::smol_str::SmolStr::new_static("did"),
430 ::jacquard_lexicon::lexicon::LexObjectProperty::String(::jacquard_lexicon::lexicon::LexString {
431 description: None,
432 format: Some(
433 ::jacquard_lexicon::lexicon::LexStringFormat::Did,
434 ),
435 default: None,
436 min_length: None,
437 max_length: None,
438 min_graphemes: None,
439 max_graphemes: None,
440 r#enum: None,
441 r#const: None,
442 known_values: None,
443 }),
444 );
445 map.insert(
446 ::jacquard_common::smol_str::SmolStr::new_static("disabled"),
447 ::jacquard_lexicon::lexicon::LexObjectProperty::Boolean(::jacquard_lexicon::lexicon::LexBoolean {
448 description: None,
449 default: None,
450 r#const: None,
451 }),
452 );
453 map.insert(
454 ::jacquard_common::smol_str::SmolStr::new_static(
455 "lastUpdatedBy",
456 ),
457 ::jacquard_lexicon::lexicon::LexObjectProperty::String(::jacquard_lexicon::lexicon::LexString {
458 description: None,
459 format: None,
460 default: None,
461 min_length: None,
462 max_length: None,
463 min_graphemes: None,
464 max_graphemes: None,
465 r#enum: None,
466 r#const: None,
467 known_values: None,
468 }),
469 );
470 map.insert(
471 ::jacquard_common::smol_str::SmolStr::new_static("profile"),
472 ::jacquard_lexicon::lexicon::LexObjectProperty::Ref(::jacquard_lexicon::lexicon::LexRef {
473 description: None,
474 r#ref: ::jacquard_common::CowStr::new_static(
475 "app.bsky.actor.defs#profileViewDetailed",
476 ),
477 }),
478 );
479 map.insert(
480 ::jacquard_common::smol_str::SmolStr::new_static("role"),
481 ::jacquard_lexicon::lexicon::LexObjectProperty::String(::jacquard_lexicon::lexicon::LexString {
482 description: None,
483 format: None,
484 default: None,
485 min_length: None,
486 max_length: None,
487 min_graphemes: None,
488 max_graphemes: None,
489 r#enum: None,
490 r#const: None,
491 known_values: None,
492 }),
493 );
494 map.insert(
495 ::jacquard_common::smol_str::SmolStr::new_static(
496 "updatedAt",
497 ),
498 ::jacquard_lexicon::lexicon::LexObjectProperty::String(::jacquard_lexicon::lexicon::LexString {
499 description: None,
500 format: Some(
501 ::jacquard_lexicon::lexicon::LexStringFormat::Datetime,
502 ),
503 default: None,
504 min_length: None,
505 max_length: None,
506 min_graphemes: None,
507 max_graphemes: None,
508 r#enum: None,
509 r#const: None,
510 known_values: None,
511 }),
512 );
513 map
514 },
515 }),
516 );
517 map.insert(
518 ::jacquard_common::smol_str::SmolStr::new_static("roleAdmin"),
519 ::jacquard_lexicon::lexicon::LexUserType::Token(::jacquard_lexicon::lexicon::LexToken {
520 description: None,
521 }),
522 );
523 map.insert(
524 ::jacquard_common::smol_str::SmolStr::new_static("roleModerator"),
525 ::jacquard_lexicon::lexicon::LexUserType::Token(::jacquard_lexicon::lexicon::LexToken {
526 description: None,
527 }),
528 );
529 map.insert(
530 ::jacquard_common::smol_str::SmolStr::new_static("roleTriage"),
531 ::jacquard_lexicon::lexicon::LexUserType::Token(::jacquard_lexicon::lexicon::LexToken {
532 description: None,
533 }),
534 );
535 map.insert(
536 ::jacquard_common::smol_str::SmolStr::new_static("roleVerifier"),
537 ::jacquard_lexicon::lexicon::LexUserType::Token(::jacquard_lexicon::lexicon::LexToken {
538 description: None,
539 }),
540 );
541 map
542 },
543 }
544}
545
546impl<'a> ::jacquard_lexicon::schema::LexiconSchema for Member<'a> {
547 fn nsid() -> &'static str {
548 "tools.ozone.team.defs"
549 }
550 fn def_name() -> &'static str {
551 "member"
552 }
553 fn lexicon_doc() -> ::jacquard_lexicon::lexicon::LexiconDoc<'static> {
554 lexicon_doc_tools_ozone_team_defs()
555 }
556 fn validate(
557 &self,
558 ) -> ::core::result::Result<(), ::jacquard_lexicon::validation::ConstraintError> {
559 Ok(())
560 }
561}
562
563/// Admin role. Highest level of access, can perform all actions.
564#[derive(
565 serde::Serialize,
566 serde::Deserialize,
567 Debug,
568 Clone,
569 PartialEq,
570 Eq,
571 Hash,
572 jacquard_derive::IntoStatic
573)]
574pub struct RoleAdmin;
575impl std::fmt::Display for RoleAdmin {
576 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
577 write!(f, "roleAdmin")
578 }
579}
580
581/// Moderator role. Can perform most actions.
582#[derive(
583 serde::Serialize,
584 serde::Deserialize,
585 Debug,
586 Clone,
587 PartialEq,
588 Eq,
589 Hash,
590 jacquard_derive::IntoStatic
591)]
592pub struct RoleModerator;
593impl std::fmt::Display for RoleModerator {
594 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
595 write!(f, "roleModerator")
596 }
597}
598
599/// Triage role. Mostly intended for monitoring and escalating issues.
600#[derive(
601 serde::Serialize,
602 serde::Deserialize,
603 Debug,
604 Clone,
605 PartialEq,
606 Eq,
607 Hash,
608 jacquard_derive::IntoStatic
609)]
610pub struct RoleTriage;
611impl std::fmt::Display for RoleTriage {
612 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
613 write!(f, "roleTriage")
614 }
615}
616
617/// Verifier role. Only allowed to issue verifications.
618#[derive(
619 serde::Serialize,
620 serde::Deserialize,
621 Debug,
622 Clone,
623 PartialEq,
624 Eq,
625 Hash,
626 jacquard_derive::IntoStatic
627)]
628pub struct RoleVerifier;
629impl std::fmt::Display for RoleVerifier {
630 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
631 write!(f, "roleVerifier")
632 }
633}