jacquard_api/com_atproto/admin/
update_subject_status.rs1#[allow(unused_imports)]
9use alloc::collections::BTreeMap;
10
11#[allow(unused_imports)]
12use core::marker::PhantomData;
13use jacquard_derive::{IntoStatic, lexicon, open_union};
14use serde::{Serialize, Deserialize};
15use crate::com_atproto::admin::RepoBlobRef;
16use crate::com_atproto::admin::RepoRef;
17use crate::com_atproto::admin::StatusAttr;
18use crate::com_atproto::repo::strong_ref::StrongRef;
19
20#[lexicon]
21#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, IntoStatic)]
22#[serde(rename_all = "camelCase")]
23pub struct UpdateSubjectStatus<'a> {
24 #[serde(skip_serializing_if = "Option::is_none")]
25 #[serde(borrow)]
26 pub deactivated: Option<StatusAttr<'a>>,
27 #[serde(borrow)]
28 pub subject: UpdateSubjectStatusSubject<'a>,
29 #[serde(skip_serializing_if = "Option::is_none")]
30 #[serde(borrow)]
31 pub takedown: Option<StatusAttr<'a>>,
32}
33
34
35#[open_union]
36#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, IntoStatic)]
37#[serde(tag = "$type", bound(deserialize = "'de: 'a"))]
38pub enum UpdateSubjectStatusSubject<'a> {
39 #[serde(rename = "com.atproto.admin.defs#repoRef")]
40 RepoRef(Box<RepoRef<'a>>),
41 #[serde(rename = "com.atproto.repo.strongRef")]
42 StrongRef(Box<StrongRef<'a>>),
43 #[serde(rename = "com.atproto.admin.defs#repoBlobRef")]
44 RepoBlobRef(Box<RepoBlobRef<'a>>),
45}
46
47
48#[lexicon]
49#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, IntoStatic)]
50#[serde(rename_all = "camelCase")]
51pub struct UpdateSubjectStatusOutput<'a> {
52 #[serde(borrow)]
53 pub subject: UpdateSubjectStatusOutputSubject<'a>,
54 #[serde(skip_serializing_if = "Option::is_none")]
55 #[serde(borrow)]
56 pub takedown: Option<StatusAttr<'a>>,
57}
58
59
60#[open_union]
61#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, IntoStatic)]
62#[serde(tag = "$type", bound(deserialize = "'de: 'a"))]
63pub enum UpdateSubjectStatusOutputSubject<'a> {
64 #[serde(rename = "com.atproto.admin.defs#repoRef")]
65 RepoRef(Box<RepoRef<'a>>),
66 #[serde(rename = "com.atproto.repo.strongRef")]
67 StrongRef(Box<StrongRef<'a>>),
68 #[serde(rename = "com.atproto.admin.defs#repoBlobRef")]
69 RepoBlobRef(Box<RepoBlobRef<'a>>),
70}
71
72pub struct UpdateSubjectStatusResponse;
74impl jacquard_common::xrpc::XrpcResp for UpdateSubjectStatusResponse {
75 const NSID: &'static str = "com.atproto.admin.updateSubjectStatus";
76 const ENCODING: &'static str = "application/json";
77 type Output<'de> = UpdateSubjectStatusOutput<'de>;
78 type Err<'de> = jacquard_common::xrpc::GenericError<'de>;
79}
80
81impl<'a> jacquard_common::xrpc::XrpcRequest for UpdateSubjectStatus<'a> {
82 const NSID: &'static str = "com.atproto.admin.updateSubjectStatus";
83 const METHOD: jacquard_common::xrpc::XrpcMethod = jacquard_common::xrpc::XrpcMethod::Procedure(
84 "application/json",
85 );
86 type Response = UpdateSubjectStatusResponse;
87}
88
89pub struct UpdateSubjectStatusRequest;
91impl jacquard_common::xrpc::XrpcEndpoint for UpdateSubjectStatusRequest {
92 const PATH: &'static str = "/xrpc/com.atproto.admin.updateSubjectStatus";
93 const METHOD: jacquard_common::xrpc::XrpcMethod = jacquard_common::xrpc::XrpcMethod::Procedure(
94 "application/json",
95 );
96 type Request<'de> = UpdateSubjectStatus<'de>;
97 type Response = UpdateSubjectStatusResponse;
98}
99
100pub mod update_subject_status_state {
101
102 pub use crate::builder_types::{Set, Unset, IsSet, IsUnset};
103 #[allow(unused)]
104 use ::core::marker::PhantomData;
105 mod sealed {
106 pub trait Sealed {}
107 }
108 pub trait State: sealed::Sealed {
110 type Subject;
111 }
112 pub struct Empty(());
114 impl sealed::Sealed for Empty {}
115 impl State for Empty {
116 type Subject = Unset;
117 }
118 pub struct SetSubject<S: State = Empty>(PhantomData<fn() -> S>);
120 impl<S: State> sealed::Sealed for SetSubject<S> {}
121 impl<S: State> State for SetSubject<S> {
122 type Subject = Set<members::subject>;
123 }
124 #[allow(non_camel_case_types)]
126 pub mod members {
127 pub struct subject(());
129 }
130}
131
132pub struct UpdateSubjectStatusBuilder<'a, S: update_subject_status_state::State> {
134 _state: PhantomData<fn() -> S>,
135 _fields: (
136 Option<StatusAttr<'a>>,
137 Option<UpdateSubjectStatusSubject<'a>>,
138 Option<StatusAttr<'a>>,
139 ),
140 _lifetime: PhantomData<&'a ()>,
141}
142
143impl<'a> UpdateSubjectStatus<'a> {
144 pub fn new() -> UpdateSubjectStatusBuilder<'a, update_subject_status_state::Empty> {
146 UpdateSubjectStatusBuilder::new()
147 }
148}
149
150impl<'a> UpdateSubjectStatusBuilder<'a, update_subject_status_state::Empty> {
151 pub fn new() -> Self {
153 UpdateSubjectStatusBuilder {
154 _state: PhantomData,
155 _fields: (None, None, None),
156 _lifetime: PhantomData,
157 }
158 }
159}
160
161impl<'a, S: update_subject_status_state::State> UpdateSubjectStatusBuilder<'a, S> {
162 pub fn deactivated(mut self, value: impl Into<Option<StatusAttr<'a>>>) -> Self {
164 self._fields.0 = value.into();
165 self
166 }
167 pub fn maybe_deactivated(mut self, value: Option<StatusAttr<'a>>) -> Self {
169 self._fields.0 = value;
170 self
171 }
172}
173
174impl<'a, S> UpdateSubjectStatusBuilder<'a, S>
175where
176 S: update_subject_status_state::State,
177 S::Subject: update_subject_status_state::IsUnset,
178{
179 pub fn subject(
181 mut self,
182 value: impl Into<UpdateSubjectStatusSubject<'a>>,
183 ) -> UpdateSubjectStatusBuilder<'a, update_subject_status_state::SetSubject<S>> {
184 self._fields.1 = Option::Some(value.into());
185 UpdateSubjectStatusBuilder {
186 _state: PhantomData,
187 _fields: self._fields,
188 _lifetime: PhantomData,
189 }
190 }
191}
192
193impl<'a, S: update_subject_status_state::State> UpdateSubjectStatusBuilder<'a, S> {
194 pub fn takedown(mut self, value: impl Into<Option<StatusAttr<'a>>>) -> Self {
196 self._fields.2 = value.into();
197 self
198 }
199 pub fn maybe_takedown(mut self, value: Option<StatusAttr<'a>>) -> Self {
201 self._fields.2 = value;
202 self
203 }
204}
205
206impl<'a, S> UpdateSubjectStatusBuilder<'a, S>
207where
208 S: update_subject_status_state::State,
209 S::Subject: update_subject_status_state::IsSet,
210{
211 pub fn build(self) -> UpdateSubjectStatus<'a> {
213 UpdateSubjectStatus {
214 deactivated: self._fields.0,
215 subject: self._fields.1.unwrap(),
216 takedown: self._fields.2,
217 extra_data: Default::default(),
218 }
219 }
220 pub fn build_with_data(
222 self,
223 extra_data: BTreeMap<
224 jacquard_common::deps::smol_str::SmolStr,
225 jacquard_common::types::value::Data<'a>,
226 >,
227 ) -> UpdateSubjectStatus<'a> {
228 UpdateSubjectStatus {
229 deactivated: self._fields.0,
230 subject: self._fields.1.unwrap(),
231 takedown: self._fields.2,
232 extra_data: Some(extra_data),
233 }
234 }
235}