Skip to main content

jacquard_api/tools_ozone/team/
update_member.rs

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