atproto blogging
1// @generated by jacquard-lexicon. DO NOT EDIT.
2//
3// Lexicon: com.atproto.admin.updateSubjectStatus
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 UpdateSubjectStatus<'a> {
20 #[serde(skip_serializing_if = "std::option::Option::is_none")]
21 #[serde(borrow)]
22 pub deactivated: std::option::Option<crate::com_atproto::admin::StatusAttr<'a>>,
23 #[serde(borrow)]
24 pub subject: UpdateSubjectStatusSubject<'a>,
25 #[serde(skip_serializing_if = "std::option::Option::is_none")]
26 #[serde(borrow)]
27 pub takedown: std::option::Option<crate::com_atproto::admin::StatusAttr<'a>>,
28}
29
30pub mod update_subject_status_state {
31
32 pub use crate::builder_types::{Set, Unset, IsSet, IsUnset};
33 #[allow(unused)]
34 use ::core::marker::PhantomData;
35 mod sealed {
36 pub trait Sealed {}
37 }
38 /// State trait tracking which required fields have been set
39 pub trait State: sealed::Sealed {
40 type Subject;
41 }
42 /// Empty state - all required fields are unset
43 pub struct Empty(());
44 impl sealed::Sealed for Empty {}
45 impl State for Empty {
46 type Subject = Unset;
47 }
48 ///State transition - sets the `subject` field to Set
49 pub struct SetSubject<S: State = Empty>(PhantomData<fn() -> S>);
50 impl<S: State> sealed::Sealed for SetSubject<S> {}
51 impl<S: State> State for SetSubject<S> {
52 type Subject = Set<members::subject>;
53 }
54 /// Marker types for field names
55 #[allow(non_camel_case_types)]
56 pub mod members {
57 ///Marker type for the `subject` field
58 pub struct subject(());
59 }
60}
61
62/// Builder for constructing an instance of this type
63pub struct UpdateSubjectStatusBuilder<'a, S: update_subject_status_state::State> {
64 _phantom_state: ::core::marker::PhantomData<fn() -> S>,
65 __unsafe_private_named: (
66 ::core::option::Option<crate::com_atproto::admin::StatusAttr<'a>>,
67 ::core::option::Option<UpdateSubjectStatusSubject<'a>>,
68 ::core::option::Option<crate::com_atproto::admin::StatusAttr<'a>>,
69 ),
70 _phantom: ::core::marker::PhantomData<&'a ()>,
71}
72
73impl<'a> UpdateSubjectStatus<'a> {
74 /// Create a new builder for this type
75 pub fn new() -> UpdateSubjectStatusBuilder<'a, update_subject_status_state::Empty> {
76 UpdateSubjectStatusBuilder::new()
77 }
78}
79
80impl<'a> UpdateSubjectStatusBuilder<'a, update_subject_status_state::Empty> {
81 /// Create a new builder with all fields unset
82 pub fn new() -> Self {
83 UpdateSubjectStatusBuilder {
84 _phantom_state: ::core::marker::PhantomData,
85 __unsafe_private_named: (None, None, None),
86 _phantom: ::core::marker::PhantomData,
87 }
88 }
89}
90
91impl<'a, S: update_subject_status_state::State> UpdateSubjectStatusBuilder<'a, S> {
92 /// Set the `deactivated` field (optional)
93 pub fn deactivated(
94 mut self,
95 value: impl Into<Option<crate::com_atproto::admin::StatusAttr<'a>>>,
96 ) -> Self {
97 self.__unsafe_private_named.0 = value.into();
98 self
99 }
100 /// Set the `deactivated` field to an Option value (optional)
101 pub fn maybe_deactivated(
102 mut self,
103 value: Option<crate::com_atproto::admin::StatusAttr<'a>>,
104 ) -> Self {
105 self.__unsafe_private_named.0 = value;
106 self
107 }
108}
109
110impl<'a, S> UpdateSubjectStatusBuilder<'a, S>
111where
112 S: update_subject_status_state::State,
113 S::Subject: update_subject_status_state::IsUnset,
114{
115 /// Set the `subject` field (required)
116 pub fn subject(
117 mut self,
118 value: impl Into<UpdateSubjectStatusSubject<'a>>,
119 ) -> UpdateSubjectStatusBuilder<'a, update_subject_status_state::SetSubject<S>> {
120 self.__unsafe_private_named.1 = ::core::option::Option::Some(value.into());
121 UpdateSubjectStatusBuilder {
122 _phantom_state: ::core::marker::PhantomData,
123 __unsafe_private_named: self.__unsafe_private_named,
124 _phantom: ::core::marker::PhantomData,
125 }
126 }
127}
128
129impl<'a, S: update_subject_status_state::State> UpdateSubjectStatusBuilder<'a, S> {
130 /// Set the `takedown` field (optional)
131 pub fn takedown(
132 mut self,
133 value: impl Into<Option<crate::com_atproto::admin::StatusAttr<'a>>>,
134 ) -> Self {
135 self.__unsafe_private_named.2 = value.into();
136 self
137 }
138 /// Set the `takedown` field to an Option value (optional)
139 pub fn maybe_takedown(
140 mut self,
141 value: Option<crate::com_atproto::admin::StatusAttr<'a>>,
142 ) -> Self {
143 self.__unsafe_private_named.2 = value;
144 self
145 }
146}
147
148impl<'a, S> UpdateSubjectStatusBuilder<'a, S>
149where
150 S: update_subject_status_state::State,
151 S::Subject: update_subject_status_state::IsSet,
152{
153 /// Build the final struct
154 pub fn build(self) -> UpdateSubjectStatus<'a> {
155 UpdateSubjectStatus {
156 deactivated: self.__unsafe_private_named.0,
157 subject: self.__unsafe_private_named.1.unwrap(),
158 takedown: self.__unsafe_private_named.2,
159 extra_data: Default::default(),
160 }
161 }
162 /// Build the final struct with custom extra_data
163 pub fn build_with_data(
164 self,
165 extra_data: std::collections::BTreeMap<
166 jacquard_common::smol_str::SmolStr,
167 jacquard_common::types::value::Data<'a>,
168 >,
169 ) -> UpdateSubjectStatus<'a> {
170 UpdateSubjectStatus {
171 deactivated: self.__unsafe_private_named.0,
172 subject: self.__unsafe_private_named.1.unwrap(),
173 takedown: self.__unsafe_private_named.2,
174 extra_data: Some(extra_data),
175 }
176 }
177}
178
179#[jacquard_derive::open_union]
180#[derive(
181 serde::Serialize,
182 serde::Deserialize,
183 Debug,
184 Clone,
185 PartialEq,
186 Eq,
187 jacquard_derive::IntoStatic
188)]
189#[serde(tag = "$type")]
190#[serde(bound(deserialize = "'de: 'a"))]
191pub enum UpdateSubjectStatusSubject<'a> {
192 #[serde(rename = "com.atproto.admin.defs#repoRef")]
193 RepoRef(Box<crate::com_atproto::admin::RepoRef<'a>>),
194 #[serde(rename = "com.atproto.repo.strongRef")]
195 StrongRef(Box<crate::com_atproto::repo::strong_ref::StrongRef<'a>>),
196 #[serde(rename = "com.atproto.admin.defs#repoBlobRef")]
197 RepoBlobRef(Box<crate::com_atproto::admin::RepoBlobRef<'a>>),
198}
199
200#[jacquard_derive::lexicon]
201#[derive(
202 serde::Serialize,
203 serde::Deserialize,
204 Debug,
205 Clone,
206 PartialEq,
207 Eq,
208 jacquard_derive::IntoStatic
209)]
210#[serde(rename_all = "camelCase")]
211pub struct UpdateSubjectStatusOutput<'a> {
212 #[serde(borrow)]
213 pub subject: UpdateSubjectStatusOutputSubject<'a>,
214 #[serde(skip_serializing_if = "std::option::Option::is_none")]
215 #[serde(borrow)]
216 pub takedown: std::option::Option<crate::com_atproto::admin::StatusAttr<'a>>,
217}
218
219#[jacquard_derive::open_union]
220#[derive(
221 serde::Serialize,
222 serde::Deserialize,
223 Debug,
224 Clone,
225 PartialEq,
226 Eq,
227 jacquard_derive::IntoStatic
228)]
229#[serde(tag = "$type")]
230#[serde(bound(deserialize = "'de: 'a"))]
231pub enum UpdateSubjectStatusOutputSubject<'a> {
232 #[serde(rename = "com.atproto.admin.defs#repoRef")]
233 RepoRef(Box<crate::com_atproto::admin::RepoRef<'a>>),
234 #[serde(rename = "com.atproto.repo.strongRef")]
235 StrongRef(Box<crate::com_atproto::repo::strong_ref::StrongRef<'a>>),
236 #[serde(rename = "com.atproto.admin.defs#repoBlobRef")]
237 RepoBlobRef(Box<crate::com_atproto::admin::RepoBlobRef<'a>>),
238}
239
240/// Response type for
241///com.atproto.admin.updateSubjectStatus
242pub struct UpdateSubjectStatusResponse;
243impl jacquard_common::xrpc::XrpcResp for UpdateSubjectStatusResponse {
244 const NSID: &'static str = "com.atproto.admin.updateSubjectStatus";
245 const ENCODING: &'static str = "application/json";
246 type Output<'de> = UpdateSubjectStatusOutput<'de>;
247 type Err<'de> = jacquard_common::xrpc::GenericError<'de>;
248}
249
250impl<'a> jacquard_common::xrpc::XrpcRequest for UpdateSubjectStatus<'a> {
251 const NSID: &'static str = "com.atproto.admin.updateSubjectStatus";
252 const METHOD: jacquard_common::xrpc::XrpcMethod = jacquard_common::xrpc::XrpcMethod::Procedure(
253 "application/json",
254 );
255 type Response = UpdateSubjectStatusResponse;
256}
257
258/// Endpoint type for
259///com.atproto.admin.updateSubjectStatus
260pub struct UpdateSubjectStatusRequest;
261impl jacquard_common::xrpc::XrpcEndpoint for UpdateSubjectStatusRequest {
262 const PATH: &'static str = "/xrpc/com.atproto.admin.updateSubjectStatus";
263 const METHOD: jacquard_common::xrpc::XrpcMethod = jacquard_common::xrpc::XrpcMethod::Procedure(
264 "application/json",
265 );
266 type Request<'de> = UpdateSubjectStatus<'de>;
267 type Response = UpdateSubjectStatusResponse;
268}