atproto blogging
at main 344 lines 11 kB view raw
1// @generated by jacquard-lexicon. DO NOT EDIT. 2// 3// Lexicon: tools.ozone.team.updateMember 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 UpdateMember<'a> { 20 #[serde(borrow)] 21 pub did: jacquard_common::types::string::Did<'a>, 22 #[serde(skip_serializing_if = "std::option::Option::is_none")] 23 pub disabled: std::option::Option<bool>, 24 #[serde(skip_serializing_if = "std::option::Option::is_none")] 25 #[serde(borrow)] 26 pub role: std::option::Option<UpdateMemberRole<'a>>, 27} 28 29pub mod update_member_state { 30 31 pub use crate::builder_types::{Set, Unset, IsSet, IsUnset}; 32 #[allow(unused)] 33 use ::core::marker::PhantomData; 34 mod sealed { 35 pub trait Sealed {} 36 } 37 /// State trait tracking which required fields have been set 38 pub trait State: sealed::Sealed { 39 type Did; 40 } 41 /// Empty state - all required fields are unset 42 pub struct Empty(()); 43 impl sealed::Sealed for Empty {} 44 impl State for Empty { 45 type Did = Unset; 46 } 47 ///State transition - sets the `did` field to Set 48 pub struct SetDid<S: State = Empty>(PhantomData<fn() -> S>); 49 impl<S: State> sealed::Sealed for SetDid<S> {} 50 impl<S: State> State for SetDid<S> { 51 type Did = Set<members::did>; 52 } 53 /// Marker types for field names 54 #[allow(non_camel_case_types)] 55 pub mod members { 56 ///Marker type for the `did` field 57 pub struct did(()); 58 } 59} 60 61/// Builder for constructing an instance of this type 62pub struct UpdateMemberBuilder<'a, S: update_member_state::State> { 63 _phantom_state: ::core::marker::PhantomData<fn() -> S>, 64 __unsafe_private_named: ( 65 ::core::option::Option<jacquard_common::types::string::Did<'a>>, 66 ::core::option::Option<bool>, 67 ::core::option::Option<UpdateMemberRole<'a>>, 68 ), 69 _phantom: ::core::marker::PhantomData<&'a ()>, 70} 71 72impl<'a> UpdateMember<'a> { 73 /// Create a new builder for this type 74 pub fn new() -> UpdateMemberBuilder<'a, update_member_state::Empty> { 75 UpdateMemberBuilder::new() 76 } 77} 78 79impl<'a> UpdateMemberBuilder<'a, update_member_state::Empty> { 80 /// Create a new builder with all fields unset 81 pub fn new() -> Self { 82 UpdateMemberBuilder { 83 _phantom_state: ::core::marker::PhantomData, 84 __unsafe_private_named: (None, None, None), 85 _phantom: ::core::marker::PhantomData, 86 } 87 } 88} 89 90impl<'a, S> UpdateMemberBuilder<'a, S> 91where 92 S: update_member_state::State, 93 S::Did: update_member_state::IsUnset, 94{ 95 /// Set the `did` field (required) 96 pub fn did( 97 mut self, 98 value: impl Into<jacquard_common::types::string::Did<'a>>, 99 ) -> UpdateMemberBuilder<'a, update_member_state::SetDid<S>> { 100 self.__unsafe_private_named.0 = ::core::option::Option::Some(value.into()); 101 UpdateMemberBuilder { 102 _phantom_state: ::core::marker::PhantomData, 103 __unsafe_private_named: self.__unsafe_private_named, 104 _phantom: ::core::marker::PhantomData, 105 } 106 } 107} 108 109impl<'a, S: update_member_state::State> UpdateMemberBuilder<'a, S> { 110 /// Set the `disabled` field (optional) 111 pub fn disabled(mut self, value: impl Into<Option<bool>>) -> Self { 112 self.__unsafe_private_named.1 = value.into(); 113 self 114 } 115 /// Set the `disabled` field to an Option value (optional) 116 pub fn maybe_disabled(mut self, value: Option<bool>) -> Self { 117 self.__unsafe_private_named.1 = value; 118 self 119 } 120} 121 122impl<'a, S: update_member_state::State> UpdateMemberBuilder<'a, S> { 123 /// Set the `role` field (optional) 124 pub fn role(mut self, value: impl Into<Option<UpdateMemberRole<'a>>>) -> Self { 125 self.__unsafe_private_named.2 = value.into(); 126 self 127 } 128 /// Set the `role` field to an Option value (optional) 129 pub fn maybe_role(mut self, value: Option<UpdateMemberRole<'a>>) -> Self { 130 self.__unsafe_private_named.2 = value; 131 self 132 } 133} 134 135impl<'a, S> UpdateMemberBuilder<'a, S> 136where 137 S: update_member_state::State, 138 S::Did: update_member_state::IsSet, 139{ 140 /// Build the final struct 141 pub fn build(self) -> UpdateMember<'a> { 142 UpdateMember { 143 did: self.__unsafe_private_named.0.unwrap(), 144 disabled: self.__unsafe_private_named.1, 145 role: self.__unsafe_private_named.2, 146 extra_data: Default::default(), 147 } 148 } 149 /// Build the final struct with custom extra_data 150 pub fn build_with_data( 151 self, 152 extra_data: std::collections::BTreeMap< 153 jacquard_common::smol_str::SmolStr, 154 jacquard_common::types::value::Data<'a>, 155 >, 156 ) -> UpdateMember<'a> { 157 UpdateMember { 158 did: self.__unsafe_private_named.0.unwrap(), 159 disabled: self.__unsafe_private_named.1, 160 role: self.__unsafe_private_named.2, 161 extra_data: Some(extra_data), 162 } 163 } 164} 165 166#[derive(Debug, Clone, PartialEq, Eq, Hash)] 167pub enum UpdateMemberRole<'a> { 168 RoleAdmin, 169 RoleModerator, 170 RoleVerifier, 171 RoleTriage, 172 Other(jacquard_common::CowStr<'a>), 173} 174 175impl<'a> UpdateMemberRole<'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 UpdateMemberRole<'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 UpdateMemberRole<'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 UpdateMemberRole<'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 UpdateMemberRole<'a> { 218 fn as_ref(&self) -> &str { 219 self.as_str() 220 } 221} 222 223impl<'a> serde::Serialize for UpdateMemberRole<'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 UpdateMemberRole<'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 UpdateMemberRole<'a> { 246 fn default() -> Self { 247 Self::Other(Default::default()) 248 } 249} 250 251impl jacquard_common::IntoStatic for UpdateMemberRole<'_> { 252 type Output = UpdateMemberRole<'static>; 253 fn into_static(self) -> Self::Output { 254 match self { 255 UpdateMemberRole::RoleAdmin => UpdateMemberRole::RoleAdmin, 256 UpdateMemberRole::RoleModerator => UpdateMemberRole::RoleModerator, 257 UpdateMemberRole::RoleVerifier => UpdateMemberRole::RoleVerifier, 258 UpdateMemberRole::RoleTriage => UpdateMemberRole::RoleTriage, 259 UpdateMemberRole::Other(v) => UpdateMemberRole::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 UpdateMemberOutput<'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 UpdateMemberError<'a> { 296 /// The member being updated does not exist in the team 297 #[serde(rename = "MemberNotFound")] 298 MemberNotFound(std::option::Option<jacquard_common::CowStr<'a>>), 299} 300 301impl core::fmt::Display for UpdateMemberError<'_> { 302 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { 303 match self { 304 Self::MemberNotFound(msg) => { 305 write!(f, "MemberNotFound")?; 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.updateMember 318pub struct UpdateMemberResponse; 319impl jacquard_common::xrpc::XrpcResp for UpdateMemberResponse { 320 const NSID: &'static str = "tools.ozone.team.updateMember"; 321 const ENCODING: &'static str = "application/json"; 322 type Output<'de> = UpdateMemberOutput<'de>; 323 type Err<'de> = UpdateMemberError<'de>; 324} 325 326impl<'a> jacquard_common::xrpc::XrpcRequest for UpdateMember<'a> { 327 const NSID: &'static str = "tools.ozone.team.updateMember"; 328 const METHOD: jacquard_common::xrpc::XrpcMethod = jacquard_common::xrpc::XrpcMethod::Procedure( 329 "application/json", 330 ); 331 type Response = UpdateMemberResponse; 332} 333 334/// Endpoint type for 335///tools.ozone.team.updateMember 336pub struct UpdateMemberRequest; 337impl jacquard_common::xrpc::XrpcEndpoint for UpdateMemberRequest { 338 const PATH: &'static str = "/xrpc/tools.ozone.team.updateMember"; 339 const METHOD: jacquard_common::xrpc::XrpcMethod = jacquard_common::xrpc::XrpcMethod::Procedure( 340 "application/json", 341 ); 342 type Request<'de> = UpdateMember<'de>; 343 type Response = UpdateMemberResponse; 344}