atproto blogging
1// @generated by jacquard-lexicon. DO NOT EDIT.
2//
3// Lexicon: app.bsky.notification.putActivitySubscription
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 PutActivitySubscription<'a> {
20 #[serde(borrow)]
21 pub activity_subscription: crate::app_bsky::notification::ActivitySubscription<'a>,
22 #[serde(borrow)]
23 pub subject: jacquard_common::types::string::Did<'a>,
24}
25
26pub mod put_activity_subscription_state {
27
28 pub use crate::builder_types::{Set, Unset, IsSet, IsUnset};
29 #[allow(unused)]
30 use ::core::marker::PhantomData;
31 mod sealed {
32 pub trait Sealed {}
33 }
34 /// State trait tracking which required fields have been set
35 pub trait State: sealed::Sealed {
36 type Subject;
37 type ActivitySubscription;
38 }
39 /// Empty state - all required fields are unset
40 pub struct Empty(());
41 impl sealed::Sealed for Empty {}
42 impl State for Empty {
43 type Subject = Unset;
44 type ActivitySubscription = Unset;
45 }
46 ///State transition - sets the `subject` field to Set
47 pub struct SetSubject<S: State = Empty>(PhantomData<fn() -> S>);
48 impl<S: State> sealed::Sealed for SetSubject<S> {}
49 impl<S: State> State for SetSubject<S> {
50 type Subject = Set<members::subject>;
51 type ActivitySubscription = S::ActivitySubscription;
52 }
53 ///State transition - sets the `activity_subscription` field to Set
54 pub struct SetActivitySubscription<S: State = Empty>(PhantomData<fn() -> S>);
55 impl<S: State> sealed::Sealed for SetActivitySubscription<S> {}
56 impl<S: State> State for SetActivitySubscription<S> {
57 type Subject = S::Subject;
58 type ActivitySubscription = Set<members::activity_subscription>;
59 }
60 /// Marker types for field names
61 #[allow(non_camel_case_types)]
62 pub mod members {
63 ///Marker type for the `subject` field
64 pub struct subject(());
65 ///Marker type for the `activity_subscription` field
66 pub struct activity_subscription(());
67 }
68}
69
70/// Builder for constructing an instance of this type
71pub struct PutActivitySubscriptionBuilder<
72 'a,
73 S: put_activity_subscription_state::State,
74> {
75 _phantom_state: ::core::marker::PhantomData<fn() -> S>,
76 __unsafe_private_named: (
77 ::core::option::Option<crate::app_bsky::notification::ActivitySubscription<'a>>,
78 ::core::option::Option<jacquard_common::types::string::Did<'a>>,
79 ),
80 _phantom: ::core::marker::PhantomData<&'a ()>,
81}
82
83impl<'a> PutActivitySubscription<'a> {
84 /// Create a new builder for this type
85 pub fn new() -> PutActivitySubscriptionBuilder<
86 'a,
87 put_activity_subscription_state::Empty,
88 > {
89 PutActivitySubscriptionBuilder::new()
90 }
91}
92
93impl<'a> PutActivitySubscriptionBuilder<'a, put_activity_subscription_state::Empty> {
94 /// Create a new builder with all fields unset
95 pub fn new() -> Self {
96 PutActivitySubscriptionBuilder {
97 _phantom_state: ::core::marker::PhantomData,
98 __unsafe_private_named: (None, None),
99 _phantom: ::core::marker::PhantomData,
100 }
101 }
102}
103
104impl<'a, S> PutActivitySubscriptionBuilder<'a, S>
105where
106 S: put_activity_subscription_state::State,
107 S::ActivitySubscription: put_activity_subscription_state::IsUnset,
108{
109 /// Set the `activitySubscription` field (required)
110 pub fn activity_subscription(
111 mut self,
112 value: impl Into<crate::app_bsky::notification::ActivitySubscription<'a>>,
113 ) -> PutActivitySubscriptionBuilder<
114 'a,
115 put_activity_subscription_state::SetActivitySubscription<S>,
116 > {
117 self.__unsafe_private_named.0 = ::core::option::Option::Some(value.into());
118 PutActivitySubscriptionBuilder {
119 _phantom_state: ::core::marker::PhantomData,
120 __unsafe_private_named: self.__unsafe_private_named,
121 _phantom: ::core::marker::PhantomData,
122 }
123 }
124}
125
126impl<'a, S> PutActivitySubscriptionBuilder<'a, S>
127where
128 S: put_activity_subscription_state::State,
129 S::Subject: put_activity_subscription_state::IsUnset,
130{
131 /// Set the `subject` field (required)
132 pub fn subject(
133 mut self,
134 value: impl Into<jacquard_common::types::string::Did<'a>>,
135 ) -> PutActivitySubscriptionBuilder<
136 'a,
137 put_activity_subscription_state::SetSubject<S>,
138 > {
139 self.__unsafe_private_named.1 = ::core::option::Option::Some(value.into());
140 PutActivitySubscriptionBuilder {
141 _phantom_state: ::core::marker::PhantomData,
142 __unsafe_private_named: self.__unsafe_private_named,
143 _phantom: ::core::marker::PhantomData,
144 }
145 }
146}
147
148impl<'a, S> PutActivitySubscriptionBuilder<'a, S>
149where
150 S: put_activity_subscription_state::State,
151 S::Subject: put_activity_subscription_state::IsSet,
152 S::ActivitySubscription: put_activity_subscription_state::IsSet,
153{
154 /// Build the final struct
155 pub fn build(self) -> PutActivitySubscription<'a> {
156 PutActivitySubscription {
157 activity_subscription: self.__unsafe_private_named.0.unwrap(),
158 subject: self.__unsafe_private_named.1.unwrap(),
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 ) -> PutActivitySubscription<'a> {
170 PutActivitySubscription {
171 activity_subscription: self.__unsafe_private_named.0.unwrap(),
172 subject: self.__unsafe_private_named.1.unwrap(),
173 extra_data: Some(extra_data),
174 }
175 }
176}
177
178#[jacquard_derive::lexicon]
179#[derive(
180 serde::Serialize,
181 serde::Deserialize,
182 Debug,
183 Clone,
184 PartialEq,
185 Eq,
186 jacquard_derive::IntoStatic
187)]
188#[serde(rename_all = "camelCase")]
189pub struct PutActivitySubscriptionOutput<'a> {
190 #[serde(skip_serializing_if = "std::option::Option::is_none")]
191 #[serde(borrow)]
192 pub activity_subscription: std::option::Option<
193 crate::app_bsky::notification::ActivitySubscription<'a>,
194 >,
195 #[serde(borrow)]
196 pub subject: jacquard_common::types::string::Did<'a>,
197}
198
199/// Response type for
200///app.bsky.notification.putActivitySubscription
201pub struct PutActivitySubscriptionResponse;
202impl jacquard_common::xrpc::XrpcResp for PutActivitySubscriptionResponse {
203 const NSID: &'static str = "app.bsky.notification.putActivitySubscription";
204 const ENCODING: &'static str = "application/json";
205 type Output<'de> = PutActivitySubscriptionOutput<'de>;
206 type Err<'de> = jacquard_common::xrpc::GenericError<'de>;
207}
208
209impl<'a> jacquard_common::xrpc::XrpcRequest for PutActivitySubscription<'a> {
210 const NSID: &'static str = "app.bsky.notification.putActivitySubscription";
211 const METHOD: jacquard_common::xrpc::XrpcMethod = jacquard_common::xrpc::XrpcMethod::Procedure(
212 "application/json",
213 );
214 type Response = PutActivitySubscriptionResponse;
215}
216
217/// Endpoint type for
218///app.bsky.notification.putActivitySubscription
219pub struct PutActivitySubscriptionRequest;
220impl jacquard_common::xrpc::XrpcEndpoint for PutActivitySubscriptionRequest {
221 const PATH: &'static str = "/xrpc/app.bsky.notification.putActivitySubscription";
222 const METHOD: jacquard_common::xrpc::XrpcMethod = jacquard_common::xrpc::XrpcMethod::Procedure(
223 "application/json",
224 );
225 type Request<'de> = PutActivitySubscription<'de>;
226 type Response = PutActivitySubscriptionResponse;
227}