atproto blogging
at main 270 lines 9.7 kB view raw
1// @generated by jacquard-lexicon. DO NOT EDIT. 2// 3// Lexicon: site.standard.graph.subscription 4// 5// This file was automatically generated from Lexicon schemas. 6// Any manual changes will be overwritten on the next regeneration. 7 8/// Record declaring a subscription to a publication 9#[jacquard_derive::lexicon] 10#[derive( 11 serde::Serialize, 12 serde::Deserialize, 13 Debug, 14 Clone, 15 PartialEq, 16 Eq, 17 jacquard_derive::IntoStatic 18)] 19#[serde(rename_all = "camelCase")] 20pub struct Subscription<'a> { 21 /// AT-URI reference to the publication record being subscribed to (ex: at://did:plc:abc123/site.standard.publication/xyz789). 22 #[serde(borrow)] 23 pub publication: jacquard_common::types::string::AtUri<'a>, 24} 25 26pub mod 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 Publication; 37 } 38 /// Empty state - all required fields are unset 39 pub struct Empty(()); 40 impl sealed::Sealed for Empty {} 41 impl State for Empty { 42 type Publication = Unset; 43 } 44 ///State transition - sets the `publication` field to Set 45 pub struct SetPublication<S: State = Empty>(PhantomData<fn() -> S>); 46 impl<S: State> sealed::Sealed for SetPublication<S> {} 47 impl<S: State> State for SetPublication<S> { 48 type Publication = Set<members::publication>; 49 } 50 /// Marker types for field names 51 #[allow(non_camel_case_types)] 52 pub mod members { 53 ///Marker type for the `publication` field 54 pub struct publication(()); 55 } 56} 57 58/// Builder for constructing an instance of this type 59pub struct SubscriptionBuilder<'a, S: subscription_state::State> { 60 _phantom_state: ::core::marker::PhantomData<fn() -> S>, 61 __unsafe_private_named: ( 62 ::core::option::Option<jacquard_common::types::string::AtUri<'a>>, 63 ), 64 _phantom: ::core::marker::PhantomData<&'a ()>, 65} 66 67impl<'a> Subscription<'a> { 68 /// Create a new builder for this type 69 pub fn new() -> SubscriptionBuilder<'a, subscription_state::Empty> { 70 SubscriptionBuilder::new() 71 } 72} 73 74impl<'a> SubscriptionBuilder<'a, subscription_state::Empty> { 75 /// Create a new builder with all fields unset 76 pub fn new() -> Self { 77 SubscriptionBuilder { 78 _phantom_state: ::core::marker::PhantomData, 79 __unsafe_private_named: (None,), 80 _phantom: ::core::marker::PhantomData, 81 } 82 } 83} 84 85impl<'a, S> SubscriptionBuilder<'a, S> 86where 87 S: subscription_state::State, 88 S::Publication: subscription_state::IsUnset, 89{ 90 /// Set the `publication` field (required) 91 pub fn publication( 92 mut self, 93 value: impl Into<jacquard_common::types::string::AtUri<'a>>, 94 ) -> SubscriptionBuilder<'a, subscription_state::SetPublication<S>> { 95 self.__unsafe_private_named.0 = ::core::option::Option::Some(value.into()); 96 SubscriptionBuilder { 97 _phantom_state: ::core::marker::PhantomData, 98 __unsafe_private_named: self.__unsafe_private_named, 99 _phantom: ::core::marker::PhantomData, 100 } 101 } 102} 103 104impl<'a, S> SubscriptionBuilder<'a, S> 105where 106 S: subscription_state::State, 107 S::Publication: subscription_state::IsSet, 108{ 109 /// Build the final struct 110 pub fn build(self) -> Subscription<'a> { 111 Subscription { 112 publication: self.__unsafe_private_named.0.unwrap(), 113 extra_data: Default::default(), 114 } 115 } 116 /// Build the final struct with custom extra_data 117 pub fn build_with_data( 118 self, 119 extra_data: std::collections::BTreeMap< 120 jacquard_common::smol_str::SmolStr, 121 jacquard_common::types::value::Data<'a>, 122 >, 123 ) -> Subscription<'a> { 124 Subscription { 125 publication: self.__unsafe_private_named.0.unwrap(), 126 extra_data: Some(extra_data), 127 } 128 } 129} 130 131impl<'a> Subscription<'a> { 132 pub fn uri( 133 uri: impl Into<jacquard_common::CowStr<'a>>, 134 ) -> Result< 135 jacquard_common::types::uri::RecordUri<'a, SubscriptionRecord>, 136 jacquard_common::types::uri::UriError, 137 > { 138 jacquard_common::types::uri::RecordUri::try_from_uri( 139 jacquard_common::types::string::AtUri::new_cow(uri.into())?, 140 ) 141 } 142} 143 144/// Typed wrapper for GetRecord response with this collection's record type. 145#[derive( 146 serde::Serialize, 147 serde::Deserialize, 148 Debug, 149 Clone, 150 PartialEq, 151 Eq, 152 jacquard_derive::IntoStatic 153)] 154#[serde(rename_all = "camelCase")] 155pub struct SubscriptionGetRecordOutput<'a> { 156 #[serde(skip_serializing_if = "std::option::Option::is_none")] 157 #[serde(borrow)] 158 pub cid: std::option::Option<jacquard_common::types::string::Cid<'a>>, 159 #[serde(borrow)] 160 pub uri: jacquard_common::types::string::AtUri<'a>, 161 #[serde(borrow)] 162 pub value: Subscription<'a>, 163} 164 165impl From<SubscriptionGetRecordOutput<'_>> for Subscription<'_> { 166 fn from(output: SubscriptionGetRecordOutput<'_>) -> Self { 167 use jacquard_common::IntoStatic; 168 output.value.into_static() 169 } 170} 171 172impl jacquard_common::types::collection::Collection for Subscription<'_> { 173 const NSID: &'static str = "site.standard.graph.subscription"; 174 type Record = SubscriptionRecord; 175} 176 177/// Marker type for deserializing records from this collection. 178#[derive(Debug, serde::Serialize, serde::Deserialize)] 179pub struct SubscriptionRecord; 180impl jacquard_common::xrpc::XrpcResp for SubscriptionRecord { 181 const NSID: &'static str = "site.standard.graph.subscription"; 182 const ENCODING: &'static str = "application/json"; 183 type Output<'de> = SubscriptionGetRecordOutput<'de>; 184 type Err<'de> = jacquard_common::types::collection::RecordError<'de>; 185} 186 187impl jacquard_common::types::collection::Collection for SubscriptionRecord { 188 const NSID: &'static str = "site.standard.graph.subscription"; 189 type Record = SubscriptionRecord; 190} 191 192impl<'a> ::jacquard_lexicon::schema::LexiconSchema for Subscription<'a> { 193 fn nsid() -> &'static str { 194 "site.standard.graph.subscription" 195 } 196 fn def_name() -> &'static str { 197 "main" 198 } 199 fn lexicon_doc() -> ::jacquard_lexicon::lexicon::LexiconDoc<'static> { 200 lexicon_doc_site_standard_graph_subscription() 201 } 202 fn validate( 203 &self, 204 ) -> ::core::result::Result<(), ::jacquard_lexicon::validation::ConstraintError> { 205 Ok(()) 206 } 207} 208 209fn lexicon_doc_site_standard_graph_subscription() -> ::jacquard_lexicon::lexicon::LexiconDoc< 210 'static, 211> { 212 ::jacquard_lexicon::lexicon::LexiconDoc { 213 lexicon: ::jacquard_lexicon::lexicon::Lexicon::Lexicon1, 214 id: ::jacquard_common::CowStr::new_static("site.standard.graph.subscription"), 215 revision: None, 216 description: None, 217 defs: { 218 let mut map = ::alloc::collections::BTreeMap::new(); 219 map.insert( 220 ::jacquard_common::smol_str::SmolStr::new_static("main"), 221 ::jacquard_lexicon::lexicon::LexUserType::Record(::jacquard_lexicon::lexicon::LexRecord { 222 description: Some( 223 ::jacquard_common::CowStr::new_static( 224 "Record declaring a subscription to a publication", 225 ), 226 ), 227 key: Some(::jacquard_common::CowStr::new_static("tid")), 228 record: ::jacquard_lexicon::lexicon::LexRecordRecord::Object(::jacquard_lexicon::lexicon::LexObject { 229 description: None, 230 required: Some( 231 vec![ 232 ::jacquard_common::smol_str::SmolStr::new_static("publication") 233 ], 234 ), 235 nullable: None, 236 properties: { 237 #[allow(unused_mut)] 238 let mut map = ::alloc::collections::BTreeMap::new(); 239 map.insert( 240 ::jacquard_common::smol_str::SmolStr::new_static( 241 "publication", 242 ), 243 ::jacquard_lexicon::lexicon::LexObjectProperty::String(::jacquard_lexicon::lexicon::LexString { 244 description: Some( 245 ::jacquard_common::CowStr::new_static( 246 "AT-URI reference to the publication record being subscribed to (ex: at://did:plc:abc123/site.standard.publication/xyz789).", 247 ), 248 ), 249 format: Some( 250 ::jacquard_lexicon::lexicon::LexStringFormat::AtUri, 251 ), 252 default: None, 253 min_length: None, 254 max_length: None, 255 min_graphemes: None, 256 max_graphemes: None, 257 r#enum: None, 258 r#const: None, 259 known_values: None, 260 }), 261 ); 262 map 263 }, 264 }), 265 }), 266 ); 267 map 268 }, 269 } 270}