atproto blogging
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}