A better Rust ATProto crate
at main 13 kB view raw
1// @generated by jacquard-lexicon. DO NOT EDIT. 2// 3// Lexicon: net.anisota.beta.game.log 4// 5// This file was automatically generated from Lexicon schemas. 6// Any manual changes will be overwritten on the next regeneration. 7 8/// Details about item/specimen collection 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 Default 19)] 20#[serde(rename_all = "camelCase")] 21pub struct CollectionData<'a> { 22 /// Catch probability for specimens (decimal string between 0.0 and 1.0) 23 #[serde(skip_serializing_if = "std::option::Option::is_none")] 24 #[serde(borrow)] 25 pub catch_probability: std::option::Option<jacquard_common::CowStr<'a>>, 26 /// URI of the created inventory record 27 #[serde(skip_serializing_if = "std::option::Option::is_none")] 28 #[serde(borrow)] 29 pub inventory_record_uri: std::option::Option<jacquard_common::CowStr<'a>>, 30 /// How the item was obtained 31 #[serde(skip_serializing_if = "std::option::Option::is_none")] 32 #[serde(borrow)] 33 pub method: std::option::Option<jacquard_common::CowStr<'a>>, 34 /// URI of the created specimen record 35 #[serde(skip_serializing_if = "std::option::Option::is_none")] 36 #[serde(borrow)] 37 pub specimen_record_uri: std::option::Option<jacquard_common::CowStr<'a>>, 38 /// Whether collection was successful 39 #[serde(skip_serializing_if = "std::option::Option::is_none")] 40 pub success: std::option::Option<bool>, 41 /// Milliseconds between card generation and collection 42 #[serde(skip_serializing_if = "std::option::Option::is_none")] 43 pub time_since_generation: std::option::Option<i64>, 44 /// Milliseconds between card being viewed and collected 45 #[serde(skip_serializing_if = "std::option::Option::is_none")] 46 pub time_since_viewed: std::option::Option<i64>, 47} 48 49/// Details about daily rewards claim 50#[jacquard_derive::lexicon] 51#[derive( 52 serde::Serialize, 53 serde::Deserialize, 54 Debug, 55 Clone, 56 PartialEq, 57 Eq, 58 jacquard_derive::IntoStatic, 59 Default 60)] 61#[serde(rename_all = "camelCase")] 62pub struct DailyRewardsData<'a> { 63 #[serde(skip_serializing_if = "std::option::Option::is_none")] 64 #[serde(borrow)] 65 pub reward_items: std::option::Option< 66 Vec<crate::net_anisota::beta::game::log::RewardItem<'a>>, 67 >, 68 /// Number of rewards claimed 69 #[serde(skip_serializing_if = "std::option::Option::is_none")] 70 pub rewards_count: std::option::Option<i64>, 71 /// Current daily reward streak 72 #[serde(skip_serializing_if = "std::option::Option::is_none")] 73 pub streak: std::option::Option<i64>, 74 /// Milliseconds since last claim 75 #[serde(skip_serializing_if = "std::option::Option::is_none")] 76 pub time_since_last_claim: std::option::Option<i64>, 77} 78 79/// Context about the feed when event occurred 80#[jacquard_derive::lexicon] 81#[derive( 82 serde::Serialize, 83 serde::Deserialize, 84 Debug, 85 Clone, 86 PartialEq, 87 Eq, 88 jacquard_derive::IntoStatic, 89 Default 90)] 91#[serde(rename_all = "camelCase")] 92pub struct FeedContext<'a> { 93 /// URI of the feed being viewed 94 #[serde(skip_serializing_if = "std::option::Option::is_none")] 95 #[serde(borrow)] 96 pub feed_uri: std::option::Option<jacquard_common::CowStr<'a>>, 97 /// Number of game cards injected 98 #[serde(skip_serializing_if = "std::option::Option::is_none")] 99 pub game_card_count: std::option::Option<i64>, 100 /// Number of posts in the feed 101 #[serde(skip_serializing_if = "std::option::Option::is_none")] 102 pub post_count: std::option::Option<i64>, 103 /// User's scroll position or card index 104 #[serde(skip_serializing_if = "std::option::Option::is_none")] 105 pub scroll_position: std::option::Option<i64>, 106} 107 108/// Details about game cards generated or interacted with 109#[jacquard_derive::lexicon] 110#[derive( 111 serde::Serialize, 112 serde::Deserialize, 113 Debug, 114 Clone, 115 PartialEq, 116 Eq, 117 jacquard_derive::IntoStatic, 118 Default 119)] 120#[serde(rename_all = "camelCase")] 121pub struct GameCardData<'a> { 122 /// Type of game card 123 #[serde(skip_serializing_if = "std::option::Option::is_none")] 124 #[serde(borrow)] 125 pub card_type: std::option::Option<jacquard_common::CowStr<'a>>, 126 /// Unique identifier for the game card 127 #[serde(skip_serializing_if = "std::option::Option::is_none")] 128 #[serde(borrow)] 129 pub card_uri: std::option::Option<jacquard_common::CowStr<'a>>, 130 /// Random seed used for generation (for verification) 131 #[serde(skip_serializing_if = "std::option::Option::is_none")] 132 #[serde(borrow)] 133 pub generation_seed: std::option::Option<jacquard_common::CowStr<'a>>, 134 /// Position where card was injected in feed 135 #[serde(skip_serializing_if = "std::option::Option::is_none")] 136 pub injection_position: std::option::Option<i64>, 137 /// ID of the item/specimen 138 #[serde(skip_serializing_if = "std::option::Option::is_none")] 139 #[serde(borrow)] 140 pub item_id: std::option::Option<jacquard_common::CowStr<'a>>, 141 /// Quantity of items 142 #[serde(skip_serializing_if = "std::option::Option::is_none")] 143 pub quantity: std::option::Option<i64>, 144 /// Rarity of the item/specimen 145 #[serde(skip_serializing_if = "std::option::Option::is_none")] 146 #[serde(borrow)] 147 pub rarity: std::option::Option<jacquard_common::CowStr<'a>>, 148} 149 150/// Details about item usage 151#[jacquard_derive::lexicon] 152#[derive( 153 serde::Serialize, 154 serde::Deserialize, 155 Debug, 156 Clone, 157 PartialEq, 158 Eq, 159 jacquard_derive::IntoStatic, 160 Default 161)] 162#[serde(rename_all = "camelCase")] 163pub struct ItemUsageData<'a> { 164 /// Effect that was applied 165 #[serde(skip_serializing_if = "std::option::Option::is_none")] 166 #[serde(borrow)] 167 pub effect_applied: std::option::Option<jacquard_common::CowStr<'a>>, 168 /// URI of the modified inventory record 169 #[serde(skip_serializing_if = "std::option::Option::is_none")] 170 #[serde(borrow)] 171 pub inventory_record_uri: std::option::Option<jacquard_common::CowStr<'a>>, 172 /// ID of the item used 173 #[serde(skip_serializing_if = "std::option::Option::is_none")] 174 #[serde(borrow)] 175 pub item_id: std::option::Option<jacquard_common::CowStr<'a>>, 176 /// Quantity of the item used 177 #[serde(skip_serializing_if = "std::option::Option::is_none")] 178 pub quantity_used: std::option::Option<i64>, 179 /// Remaining quantity after use 180 #[serde(skip_serializing_if = "std::option::Option::is_none")] 181 pub remaining_quantity: std::option::Option<i64>, 182} 183 184/// A log record for tracking game events and user actions for provenance and anti-bot analysis 185#[jacquard_derive::lexicon] 186#[derive( 187 serde::Serialize, 188 serde::Deserialize, 189 Debug, 190 Clone, 191 PartialEq, 192 Eq, 193 jacquard_derive::IntoStatic, 194 bon::Builder 195)] 196#[serde(rename_all = "camelCase")] 197pub struct Log<'a> { 198 #[serde(skip_serializing_if = "std::option::Option::is_none")] 199 #[builder(into)] 200 #[serde(borrow)] 201 pub collection_data: Option<crate::net_anisota::beta::game::log::CollectionData<'a>>, 202 /// When the log record was created 203 #[serde(skip_serializing_if = "std::option::Option::is_none")] 204 #[builder(into)] 205 pub created_at: Option<jacquard_common::types::string::Datetime>, 206 #[serde(skip_serializing_if = "std::option::Option::is_none")] 207 #[builder(into)] 208 #[serde(borrow)] 209 pub daily_rewards_data: Option< 210 crate::net_anisota::beta::game::log::DailyRewardsData<'a>, 211 >, 212 /// Type of event being logged 213 #[serde(borrow)] 214 #[builder(into)] 215 pub event_type: jacquard_common::CowStr<'a>, 216 #[serde(skip_serializing_if = "std::option::Option::is_none")] 217 #[builder(into)] 218 #[serde(borrow)] 219 pub feed_context: Option<crate::net_anisota::beta::game::log::FeedContext<'a>>, 220 #[serde(skip_serializing_if = "std::option::Option::is_none")] 221 #[builder(into)] 222 #[serde(borrow)] 223 pub game_card_data: Option<crate::net_anisota::beta::game::log::GameCardData<'a>>, 224 /// Unique ID of the game card this event relates to 225 #[serde(skip_serializing_if = "std::option::Option::is_none")] 226 #[builder(into)] 227 #[serde(borrow)] 228 pub game_card_id: Option<jacquard_common::CowStr<'a>>, 229 #[serde(skip_serializing_if = "std::option::Option::is_none")] 230 #[builder(into)] 231 #[serde(borrow)] 232 pub item_usage_data: Option<crate::net_anisota::beta::game::log::ItemUsageData<'a>>, 233 #[serde(skip_serializing_if = "std::option::Option::is_none")] 234 #[builder(into)] 235 #[serde(borrow)] 236 pub metadata: Option<crate::net_anisota::beta::game::log::Metadata<'a>>, 237 /// URI of the parent log record that triggered this event 238 #[serde(skip_serializing_if = "std::option::Option::is_none")] 239 #[builder(into)] 240 #[serde(borrow)] 241 pub parent_log_uri: Option<jacquard_common::CowStr<'a>>, 242 /// URI of the root log record in this event chain 243 #[serde(skip_serializing_if = "std::option::Option::is_none")] 244 #[builder(into)] 245 #[serde(borrow)] 246 pub root_log_uri: Option<jacquard_common::CowStr<'a>>, 247 /// Unique session identifier to group related events 248 #[serde(borrow)] 249 #[builder(into)] 250 pub session_id: jacquard_common::CowStr<'a>, 251 /// URI of the session record this event belongs to (at://did/collection/rkey) 252 #[serde(skip_serializing_if = "std::option::Option::is_none")] 253 #[builder(into)] 254 #[serde(borrow)] 255 pub session_uri: Option<jacquard_common::CowStr<'a>>, 256 /// When the event occurred (ISO 8601) 257 pub timestamp: jacquard_common::types::string::Datetime, 258} 259 260/// Typed wrapper for GetRecord response with this collection's record type. 261#[derive( 262 serde::Serialize, 263 serde::Deserialize, 264 Debug, 265 Clone, 266 PartialEq, 267 Eq, 268 jacquard_derive::IntoStatic 269)] 270#[serde(rename_all = "camelCase")] 271pub struct LogGetRecordOutput<'a> { 272 #[serde(skip_serializing_if = "std::option::Option::is_none")] 273 #[serde(borrow)] 274 pub cid: std::option::Option<jacquard_common::types::string::Cid<'a>>, 275 #[serde(borrow)] 276 pub uri: jacquard_common::types::string::AtUri<'a>, 277 #[serde(borrow)] 278 pub value: Log<'a>, 279} 280 281/// Marker type for deserializing records from this collection. 282pub struct LogRecord; 283impl jacquard_common::xrpc::XrpcResp for LogRecord { 284 const NSID: &'static str = "net.anisota.beta.game.log"; 285 const ENCODING: &'static str = "application/json"; 286 type Output<'de> = LogGetRecordOutput<'de>; 287 type Err<'de> = jacquard_common::types::collection::RecordError<'de>; 288} 289 290impl jacquard_common::types::collection::Collection for Log<'_> { 291 const NSID: &'static str = "net.anisota.beta.game.log"; 292 type Record = LogRecord; 293} 294 295impl From<LogGetRecordOutput<'_>> for Log<'_> { 296 fn from(output: LogGetRecordOutput<'_>) -> Self { 297 use jacquard_common::IntoStatic; 298 output.value.into_static() 299 } 300} 301 302/// Additional event-specific metadata 303#[jacquard_derive::lexicon] 304#[derive( 305 serde::Serialize, 306 serde::Deserialize, 307 Debug, 308 Clone, 309 PartialEq, 310 Eq, 311 jacquard_derive::IntoStatic, 312 Default 313)] 314#[serde(rename_all = "camelCase")] 315pub struct Metadata<'a> { 316 /// Version of the client application 317 #[serde(skip_serializing_if = "std::option::Option::is_none")] 318 #[serde(borrow)] 319 pub client_version: std::option::Option<jacquard_common::CowStr<'a>>, 320 /// Network latency in milliseconds 321 #[serde(skip_serializing_if = "std::option::Option::is_none")] 322 pub network_latency: std::option::Option<i64>, 323 /// Performance timing data 324 #[serde(skip_serializing_if = "std::option::Option::is_none")] 325 #[serde(borrow)] 326 pub performance_timings: std::option::Option< 327 jacquard_common::types::value::Data<'a>, 328 >, 329 /// Platform (web, mobile, etc.) 330 #[serde(skip_serializing_if = "std::option::Option::is_none")] 331 #[serde(borrow)] 332 pub platform: std::option::Option<jacquard_common::CowStr<'a>>, 333} 334 335/// Item received as a reward 336#[jacquard_derive::lexicon] 337#[derive( 338 serde::Serialize, 339 serde::Deserialize, 340 Debug, 341 Clone, 342 PartialEq, 343 Eq, 344 jacquard_derive::IntoStatic, 345 Default 346)] 347#[serde(rename_all = "camelCase")] 348pub struct RewardItem<'a> { 349 #[serde(skip_serializing_if = "std::option::Option::is_none")] 350 #[serde(borrow)] 351 pub item_id: std::option::Option<jacquard_common::CowStr<'a>>, 352 #[serde(skip_serializing_if = "std::option::Option::is_none")] 353 pub quantity: std::option::Option<i64>, 354 #[serde(skip_serializing_if = "std::option::Option::is_none")] 355 #[serde(borrow)] 356 pub rarity: std::option::Option<jacquard_common::CowStr<'a>>, 357}