atproto blogging
at main 344 lines 10 kB view raw
1// @generated by jacquard-lexicon. DO NOT EDIT. 2// 3// Lexicon: tools.ozone.team.addMember 4// 5// This file was automatically generated from Lexicon schemas. 6// Any manual changes will be overwritten on the next regeneration. 7 8#[jacquard_derive::lexicon] 9#[derive( 10 serde::Serialize, 11 serde::Deserialize, 12 Debug, 13 Clone, 14 PartialEq, 15 Eq, 16 jacquard_derive::IntoStatic 17)] 18#[serde(rename_all = "camelCase")] 19pub struct AddMember<'a> { 20 #[serde(borrow)] 21 pub did: jacquard_common::types::string::Did<'a>, 22 #[serde(borrow)] 23 pub role: AddMemberRole<'a>, 24} 25 26pub mod add_member_state { 27 28 pub use crate::builder_types::{Set, Unset, IsSet, IsUnset}; 29 #[allow(unused)] 30 use ::core::marker::PhantomData; 31 mod sealed { 32 pub trait Sealed {} 33 } 34 /// State trait tracking which required fields have been set 35 pub trait State: sealed::Sealed { 36 type Did; 37 type Role; 38 } 39 /// Empty state - all required fields are unset 40 pub struct Empty(()); 41 impl sealed::Sealed for Empty {} 42 impl State for Empty { 43 type Did = Unset; 44 type Role = Unset; 45 } 46 ///State transition - sets the `did` field to Set 47 pub struct SetDid<S: State = Empty>(PhantomData<fn() -> S>); 48 impl<S: State> sealed::Sealed for SetDid<S> {} 49 impl<S: State> State for SetDid<S> { 50 type Did = Set<members::did>; 51 type Role = S::Role; 52 } 53 ///State transition - sets the `role` field to Set 54 pub struct SetRole<S: State = Empty>(PhantomData<fn() -> S>); 55 impl<S: State> sealed::Sealed for SetRole<S> {} 56 impl<S: State> State for SetRole<S> { 57 type Did = S::Did; 58 type Role = Set<members::role>; 59 } 60 /// Marker types for field names 61 #[allow(non_camel_case_types)] 62 pub mod members { 63 ///Marker type for the `did` field 64 pub struct did(()); 65 ///Marker type for the `role` field 66 pub struct role(()); 67 } 68} 69 70/// Builder for constructing an instance of this type 71pub struct AddMemberBuilder<'a, S: add_member_state::State> { 72 _phantom_state: ::core::marker::PhantomData<fn() -> S>, 73 __unsafe_private_named: ( 74 ::core::option::Option<jacquard_common::types::string::Did<'a>>, 75 ::core::option::Option<AddMemberRole<'a>>, 76 ), 77 _phantom: ::core::marker::PhantomData<&'a ()>, 78} 79 80impl<'a> AddMember<'a> { 81 /// Create a new builder for this type 82 pub fn new() -> AddMemberBuilder<'a, add_member_state::Empty> { 83 AddMemberBuilder::new() 84 } 85} 86 87impl<'a> AddMemberBuilder<'a, add_member_state::Empty> { 88 /// Create a new builder with all fields unset 89 pub fn new() -> Self { 90 AddMemberBuilder { 91 _phantom_state: ::core::marker::PhantomData, 92 __unsafe_private_named: (None, None), 93 _phantom: ::core::marker::PhantomData, 94 } 95 } 96} 97 98impl<'a, S> AddMemberBuilder<'a, S> 99where 100 S: add_member_state::State, 101 S::Did: add_member_state::IsUnset, 102{ 103 /// Set the `did` field (required) 104 pub fn did( 105 mut self, 106 value: impl Into<jacquard_common::types::string::Did<'a>>, 107 ) -> AddMemberBuilder<'a, add_member_state::SetDid<S>> { 108 self.__unsafe_private_named.0 = ::core::option::Option::Some(value.into()); 109 AddMemberBuilder { 110 _phantom_state: ::core::marker::PhantomData, 111 __unsafe_private_named: self.__unsafe_private_named, 112 _phantom: ::core::marker::PhantomData, 113 } 114 } 115} 116 117impl<'a, S> AddMemberBuilder<'a, S> 118where 119 S: add_member_state::State, 120 S::Role: add_member_state::IsUnset, 121{ 122 /// Set the `role` field (required) 123 pub fn role( 124 mut self, 125 value: impl Into<AddMemberRole<'a>>, 126 ) -> AddMemberBuilder<'a, add_member_state::SetRole<S>> { 127 self.__unsafe_private_named.1 = ::core::option::Option::Some(value.into()); 128 AddMemberBuilder { 129 _phantom_state: ::core::marker::PhantomData, 130 __unsafe_private_named: self.__unsafe_private_named, 131 _phantom: ::core::marker::PhantomData, 132 } 133 } 134} 135 136impl<'a, S> AddMemberBuilder<'a, S> 137where 138 S: add_member_state::State, 139 S::Did: add_member_state::IsSet, 140 S::Role: add_member_state::IsSet, 141{ 142 /// Build the final struct 143 pub fn build(self) -> AddMember<'a> { 144 AddMember { 145 did: self.__unsafe_private_named.0.unwrap(), 146 role: self.__unsafe_private_named.1.unwrap(), 147 extra_data: Default::default(), 148 } 149 } 150 /// Build the final struct with custom extra_data 151 pub fn build_with_data( 152 self, 153 extra_data: std::collections::BTreeMap< 154 jacquard_common::smol_str::SmolStr, 155 jacquard_common::types::value::Data<'a>, 156 >, 157 ) -> AddMember<'a> { 158 AddMember { 159 did: self.__unsafe_private_named.0.unwrap(), 160 role: self.__unsafe_private_named.1.unwrap(), 161 extra_data: Some(extra_data), 162 } 163 } 164} 165 166#[derive(Debug, Clone, PartialEq, Eq, Hash)] 167pub enum AddMemberRole<'a> { 168 RoleAdmin, 169 RoleModerator, 170 RoleVerifier, 171 RoleTriage, 172 Other(jacquard_common::CowStr<'a>), 173} 174 175impl<'a> AddMemberRole<'a> { 176 pub fn as_str(&self) -> &str { 177 match self { 178 Self::RoleAdmin => "tools.ozone.team.defs#roleAdmin", 179 Self::RoleModerator => "tools.ozone.team.defs#roleModerator", 180 Self::RoleVerifier => "tools.ozone.team.defs#roleVerifier", 181 Self::RoleTriage => "tools.ozone.team.defs#roleTriage", 182 Self::Other(s) => s.as_ref(), 183 } 184 } 185} 186 187impl<'a> From<&'a str> for AddMemberRole<'a> { 188 fn from(s: &'a str) -> Self { 189 match s { 190 "tools.ozone.team.defs#roleAdmin" => Self::RoleAdmin, 191 "tools.ozone.team.defs#roleModerator" => Self::RoleModerator, 192 "tools.ozone.team.defs#roleVerifier" => Self::RoleVerifier, 193 "tools.ozone.team.defs#roleTriage" => Self::RoleTriage, 194 _ => Self::Other(jacquard_common::CowStr::from(s)), 195 } 196 } 197} 198 199impl<'a> From<String> for AddMemberRole<'a> { 200 fn from(s: String) -> Self { 201 match s.as_str() { 202 "tools.ozone.team.defs#roleAdmin" => Self::RoleAdmin, 203 "tools.ozone.team.defs#roleModerator" => Self::RoleModerator, 204 "tools.ozone.team.defs#roleVerifier" => Self::RoleVerifier, 205 "tools.ozone.team.defs#roleTriage" => Self::RoleTriage, 206 _ => Self::Other(jacquard_common::CowStr::from(s)), 207 } 208 } 209} 210 211impl<'a> core::fmt::Display for AddMemberRole<'a> { 212 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { 213 write!(f, "{}", self.as_str()) 214 } 215} 216 217impl<'a> AsRef<str> for AddMemberRole<'a> { 218 fn as_ref(&self) -> &str { 219 self.as_str() 220 } 221} 222 223impl<'a> serde::Serialize for AddMemberRole<'a> { 224 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> 225 where 226 S: serde::Serializer, 227 { 228 serializer.serialize_str(self.as_str()) 229 } 230} 231 232impl<'de, 'a> serde::Deserialize<'de> for AddMemberRole<'a> 233where 234 'de: 'a, 235{ 236 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> 237 where 238 D: serde::Deserializer<'de>, 239 { 240 let s = <&'de str>::deserialize(deserializer)?; 241 Ok(Self::from(s)) 242 } 243} 244 245impl<'a> Default for AddMemberRole<'a> { 246 fn default() -> Self { 247 Self::Other(Default::default()) 248 } 249} 250 251impl jacquard_common::IntoStatic for AddMemberRole<'_> { 252 type Output = AddMemberRole<'static>; 253 fn into_static(self) -> Self::Output { 254 match self { 255 AddMemberRole::RoleAdmin => AddMemberRole::RoleAdmin, 256 AddMemberRole::RoleModerator => AddMemberRole::RoleModerator, 257 AddMemberRole::RoleVerifier => AddMemberRole::RoleVerifier, 258 AddMemberRole::RoleTriage => AddMemberRole::RoleTriage, 259 AddMemberRole::Other(v) => AddMemberRole::Other(v.into_static()), 260 } 261 } 262} 263 264#[jacquard_derive::lexicon] 265#[derive( 266 serde::Serialize, 267 serde::Deserialize, 268 Debug, 269 Clone, 270 PartialEq, 271 Eq, 272 jacquard_derive::IntoStatic 273)] 274#[serde(rename_all = "camelCase")] 275pub struct AddMemberOutput<'a> { 276 #[serde(flatten)] 277 #[serde(borrow)] 278 pub value: crate::tools_ozone::team::Member<'a>, 279} 280 281#[jacquard_derive::open_union] 282#[derive( 283 serde::Serialize, 284 serde::Deserialize, 285 Debug, 286 Clone, 287 PartialEq, 288 Eq, 289 thiserror::Error, 290 miette::Diagnostic, 291 jacquard_derive::IntoStatic 292)] 293#[serde(tag = "error", content = "message")] 294#[serde(bound(deserialize = "'de: 'a"))] 295pub enum AddMemberError<'a> { 296 /// Member already exists in the team. 297 #[serde(rename = "MemberAlreadyExists")] 298 MemberAlreadyExists(std::option::Option<jacquard_common::CowStr<'a>>), 299} 300 301impl core::fmt::Display for AddMemberError<'_> { 302 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { 303 match self { 304 Self::MemberAlreadyExists(msg) => { 305 write!(f, "MemberAlreadyExists")?; 306 if let Some(msg) = msg { 307 write!(f, ": {}", msg)?; 308 } 309 Ok(()) 310 } 311 Self::Unknown(err) => write!(f, "Unknown error: {:?}", err), 312 } 313 } 314} 315 316/// Response type for 317///tools.ozone.team.addMember 318pub struct AddMemberResponse; 319impl jacquard_common::xrpc::XrpcResp for AddMemberResponse { 320 const NSID: &'static str = "tools.ozone.team.addMember"; 321 const ENCODING: &'static str = "application/json"; 322 type Output<'de> = AddMemberOutput<'de>; 323 type Err<'de> = AddMemberError<'de>; 324} 325 326impl<'a> jacquard_common::xrpc::XrpcRequest for AddMember<'a> { 327 const NSID: &'static str = "tools.ozone.team.addMember"; 328 const METHOD: jacquard_common::xrpc::XrpcMethod = jacquard_common::xrpc::XrpcMethod::Procedure( 329 "application/json", 330 ); 331 type Response = AddMemberResponse; 332} 333 334/// Endpoint type for 335///tools.ozone.team.addMember 336pub struct AddMemberRequest; 337impl jacquard_common::xrpc::XrpcEndpoint for AddMemberRequest { 338 const PATH: &'static str = "/xrpc/tools.ozone.team.addMember"; 339 const METHOD: jacquard_common::xrpc::XrpcMethod = jacquard_common::xrpc::XrpcMethod::Procedure( 340 "application/json", 341 ); 342 type Request<'de> = AddMember<'de>; 343 type Response = AddMemberResponse; 344}