atproto blogging
at main 633 lines 22 kB view raw
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}