1// @generated by jacquard-lexicon. DO NOT EDIT.
2//
3// Lexicon: com.atproto.temp.checkHandleAvailability
4//
5// This file was automatically generated from Lexicon schemas.
6// Any manual changes will be overwritten on the next regeneration.
7
8#[derive(
9 serde::Serialize,
10 serde::Deserialize,
11 Debug,
12 Clone,
13 PartialEq,
14 Eq,
15 bon::Builder
16)]
17#[builder(start_fn = new)]
18#[serde(rename_all = "camelCase")]
19pub struct CheckHandleAvailability<'a> {
20 #[serde(skip_serializing_if = "std::option::Option::is_none")]
21 pub birth_date: std::option::Option<jacquard_common::types::string::Datetime>,
22 #[serde(skip_serializing_if = "std::option::Option::is_none")]
23 #[serde(borrow)]
24 #[builder(into)]
25 pub email: std::option::Option<jacquard_common::CowStr<'a>>,
26 #[serde(borrow)]
27 pub handle: jacquard_common::types::string::Handle<'a>,
28}
29
30impl jacquard_common::IntoStatic for CheckHandleAvailability<'_> {
31 type Output = CheckHandleAvailability<'static>;
32 fn into_static(self) -> Self::Output {
33 CheckHandleAvailability {
34 birth_date: self.birth_date.into_static(),
35 email: self.email.into_static(),
36 handle: self.handle.into_static(),
37 }
38 }
39}
40
41#[jacquard_derive::lexicon]
42#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
43#[serde(rename_all = "camelCase")]
44pub struct CheckHandleAvailabilityOutput<'a> {
45 ///Echo of the input handle.
46 #[serde(borrow)]
47 pub handle: jacquard_common::types::string::Handle<'a>,
48 #[serde(borrow)]
49 pub result: CheckHandleAvailabilityOutputRecordResult<'a>,
50}
51
52#[jacquard_derive::open_union]
53#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
54#[serde(tag = "$type")]
55#[serde(bound(deserialize = "'de: 'a"))]
56pub enum CheckHandleAvailabilityOutputRecordResult<'a> {}
57impl jacquard_common::IntoStatic for CheckHandleAvailabilityOutputRecordResult<'_> {
58 type Output = CheckHandleAvailabilityOutputRecordResult<'static>;
59 fn into_static(self) -> Self::Output {
60 match self {
61 CheckHandleAvailabilityOutputRecordResult::Unknown(v) => {
62 CheckHandleAvailabilityOutputRecordResult::Unknown(v.into_static())
63 }
64 }
65 }
66}
67
68impl jacquard_common::IntoStatic for CheckHandleAvailabilityOutput<'_> {
69 type Output = CheckHandleAvailabilityOutput<'static>;
70 fn into_static(self) -> Self::Output {
71 CheckHandleAvailabilityOutput {
72 handle: self.handle.into_static(),
73 result: self.result.into_static(),
74 extra_data: self.extra_data.into_static(),
75 }
76 }
77}
78
79#[jacquard_derive::open_union]
80#[derive(
81 serde::Serialize,
82 serde::Deserialize,
83 Debug,
84 Clone,
85 PartialEq,
86 Eq,
87 thiserror::Error,
88 miette::Diagnostic
89)]
90#[serde(tag = "error", content = "message")]
91#[serde(bound(deserialize = "'de: 'a"))]
92pub enum CheckHandleAvailabilityError<'a> {
93 ///An invalid email was provided.
94 #[serde(rename = "InvalidEmail")]
95 InvalidEmail(std::option::Option<String>),
96}
97
98impl std::fmt::Display for CheckHandleAvailabilityError<'_> {
99 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
100 match self {
101 Self::InvalidEmail(msg) => {
102 write!(f, "InvalidEmail")?;
103 if let Some(msg) = msg {
104 write!(f, ": {}", msg)?;
105 }
106 Ok(())
107 }
108 Self::Unknown(err) => write!(f, "Unknown error: {:?}", err),
109 }
110 }
111}
112
113impl jacquard_common::IntoStatic for CheckHandleAvailabilityError<'_> {
114 type Output = CheckHandleAvailabilityError<'static>;
115 fn into_static(self) -> Self::Output {
116 match self {
117 CheckHandleAvailabilityError::InvalidEmail(v) => {
118 CheckHandleAvailabilityError::InvalidEmail(v.into_static())
119 }
120 CheckHandleAvailabilityError::Unknown(v) => {
121 CheckHandleAvailabilityError::Unknown(v.into_static())
122 }
123 }
124 }
125}
126
127impl jacquard_common::types::xrpc::XrpcRequest for CheckHandleAvailability<'_> {
128 const NSID: &'static str = "com.atproto.temp.checkHandleAvailability";
129 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query;
130 const OUTPUT_ENCODING: &'static str = "application/json";
131 type Output<'de> = CheckHandleAvailabilityOutput<'de>;
132 type Err<'de> = CheckHandleAvailabilityError<'de>;
133}
134
135///Indicates the provided handle is available.
136#[jacquard_derive::lexicon]
137#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
138#[serde(rename_all = "camelCase")]
139pub struct ResultAvailable<'a> {}
140impl jacquard_common::IntoStatic for ResultAvailable<'_> {
141 type Output = ResultAvailable<'static>;
142 fn into_static(self) -> Self::Output {
143 ResultAvailable {
144 extra_data: self.extra_data.into_static(),
145 }
146 }
147}
148
149///Indicates the provided handle is unavailable and gives suggestions of available handles.
150#[jacquard_derive::lexicon]
151#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
152#[serde(rename_all = "camelCase")]
153pub struct ResultUnavailable<'a> {
154 ///List of suggested handles based on the provided inputs.
155 #[serde(borrow)]
156 pub suggestions: Vec<
157 crate::com_atproto::temp::check_handle_availability::Suggestion<'a>,
158 >,
159}
160
161impl jacquard_common::IntoStatic for ResultUnavailable<'_> {
162 type Output = ResultUnavailable<'static>;
163 fn into_static(self) -> Self::Output {
164 ResultUnavailable {
165 suggestions: self.suggestions.into_static(),
166 extra_data: self.extra_data.into_static(),
167 }
168 }
169}
170
171#[jacquard_derive::lexicon]
172#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
173#[serde(rename_all = "camelCase")]
174pub struct Suggestion<'a> {
175 #[serde(borrow)]
176 pub handle: jacquard_common::types::string::Handle<'a>,
177 ///Method used to build this suggestion. Should be considered opaque to clients. Can be used for metrics.
178 #[serde(borrow)]
179 pub method: jacquard_common::CowStr<'a>,
180}
181
182impl jacquard_common::IntoStatic for Suggestion<'_> {
183 type Output = Suggestion<'static>;
184 fn into_static(self) -> Self::Output {
185 Suggestion {
186 handle: self.handle.into_static(),
187 method: self.method.into_static(),
188 extra_data: self.extra_data.into_static(),
189 }
190 }
191}