Skip to main content

jacquard_api/sh_weaver/notification/
get_subscription_updates.rs

1// @generated by jacquard-lexicon. DO NOT EDIT.
2//
3// Lexicon: sh.weaver.notification.getSubscriptionUpdates
4//
5// This file was automatically generated from Lexicon schemas.
6// Any manual changes will be overwritten on the next regeneration.
7
8#[allow(unused_imports)]
9use alloc::collections::BTreeMap;
10
11#[allow(unused_imports)]
12use core::marker::PhantomData;
13use jacquard_common::CowStr;
14use jacquard_common::types::string::Datetime;
15use jacquard_derive::{IntoStatic, lexicon};
16use serde::{Serialize, Deserialize};
17use crate::sh_weaver::notification::SubscriptionUpdateView;
18
19#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, IntoStatic)]
20#[serde(rename_all = "camelCase")]
21pub struct GetSubscriptionUpdates<'a> {
22    #[serde(skip_serializing_if = "Option::is_none")]
23    #[serde(borrow)]
24    pub cursor: Option<CowStr<'a>>,
25    ///Defaults to `20`. Min: 1. Max: 50.
26    #[serde(default = "_default_limit")]
27    #[serde(skip_serializing_if = "Option::is_none")]
28    pub limit: Option<i64>,
29    #[serde(skip_serializing_if = "Option::is_none")]
30    pub since: Option<Datetime>,
31}
32
33
34#[lexicon]
35#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, IntoStatic)]
36#[serde(rename_all = "camelCase")]
37pub struct GetSubscriptionUpdatesOutput<'a> {
38    #[serde(skip_serializing_if = "Option::is_none")]
39    #[serde(borrow)]
40    pub cursor: Option<CowStr<'a>>,
41    #[serde(borrow)]
42    pub updates: Vec<SubscriptionUpdateView<'a>>,
43}
44
45/// Response type for sh.weaver.notification.getSubscriptionUpdates
46pub struct GetSubscriptionUpdatesResponse;
47impl jacquard_common::xrpc::XrpcResp for GetSubscriptionUpdatesResponse {
48    const NSID: &'static str = "sh.weaver.notification.getSubscriptionUpdates";
49    const ENCODING: &'static str = "application/json";
50    type Output<'de> = GetSubscriptionUpdatesOutput<'de>;
51    type Err<'de> = jacquard_common::xrpc::GenericError<'de>;
52}
53
54impl<'a> jacquard_common::xrpc::XrpcRequest for GetSubscriptionUpdates<'a> {
55    const NSID: &'static str = "sh.weaver.notification.getSubscriptionUpdates";
56    const METHOD: jacquard_common::xrpc::XrpcMethod = jacquard_common::xrpc::XrpcMethod::Query;
57    type Response = GetSubscriptionUpdatesResponse;
58}
59
60/// Endpoint type for sh.weaver.notification.getSubscriptionUpdates
61pub struct GetSubscriptionUpdatesRequest;
62impl jacquard_common::xrpc::XrpcEndpoint for GetSubscriptionUpdatesRequest {
63    const PATH: &'static str = "/xrpc/sh.weaver.notification.getSubscriptionUpdates";
64    const METHOD: jacquard_common::xrpc::XrpcMethod = jacquard_common::xrpc::XrpcMethod::Query;
65    type Request<'de> = GetSubscriptionUpdates<'de>;
66    type Response = GetSubscriptionUpdatesResponse;
67}
68
69fn _default_limit() -> Option<i64> {
70    Some(20i64)
71}
72
73pub mod get_subscription_updates_state {
74
75    pub use crate::builder_types::{Set, Unset, IsSet, IsUnset};
76    #[allow(unused)]
77    use ::core::marker::PhantomData;
78    mod sealed {
79        pub trait Sealed {}
80    }
81    /// State trait tracking which required fields have been set
82    pub trait State: sealed::Sealed {}
83    /// Empty state - all required fields are unset
84    pub struct Empty(());
85    impl sealed::Sealed for Empty {}
86    impl State for Empty {}
87    /// Marker types for field names
88    #[allow(non_camel_case_types)]
89    pub mod members {}
90}
91
92/// Builder for constructing an instance of this type
93pub struct GetSubscriptionUpdatesBuilder<'a, S: get_subscription_updates_state::State> {
94    _state: PhantomData<fn() -> S>,
95    _fields: (Option<CowStr<'a>>, Option<i64>, Option<Datetime>),
96    _lifetime: PhantomData<&'a ()>,
97}
98
99impl<'a> GetSubscriptionUpdates<'a> {
100    /// Create a new builder for this type
101    pub fn new() -> GetSubscriptionUpdatesBuilder<
102        'a,
103        get_subscription_updates_state::Empty,
104    > {
105        GetSubscriptionUpdatesBuilder::new()
106    }
107}
108
109impl<'a> GetSubscriptionUpdatesBuilder<'a, get_subscription_updates_state::Empty> {
110    /// Create a new builder with all fields unset
111    pub fn new() -> Self {
112        GetSubscriptionUpdatesBuilder {
113            _state: PhantomData,
114            _fields: (None, None, None),
115            _lifetime: PhantomData,
116        }
117    }
118}
119
120impl<'a, S: get_subscription_updates_state::State> GetSubscriptionUpdatesBuilder<'a, S> {
121    /// Set the `cursor` field (optional)
122    pub fn cursor(mut self, value: impl Into<Option<CowStr<'a>>>) -> Self {
123        self._fields.0 = value.into();
124        self
125    }
126    /// Set the `cursor` field to an Option value (optional)
127    pub fn maybe_cursor(mut self, value: Option<CowStr<'a>>) -> Self {
128        self._fields.0 = value;
129        self
130    }
131}
132
133impl<'a, S: get_subscription_updates_state::State> GetSubscriptionUpdatesBuilder<'a, S> {
134    /// Set the `limit` field (optional)
135    pub fn limit(mut self, value: impl Into<Option<i64>>) -> Self {
136        self._fields.1 = value.into();
137        self
138    }
139    /// Set the `limit` field to an Option value (optional)
140    pub fn maybe_limit(mut self, value: Option<i64>) -> Self {
141        self._fields.1 = value;
142        self
143    }
144}
145
146impl<'a, S: get_subscription_updates_state::State> GetSubscriptionUpdatesBuilder<'a, S> {
147    /// Set the `since` field (optional)
148    pub fn since(mut self, value: impl Into<Option<Datetime>>) -> Self {
149        self._fields.2 = value.into();
150        self
151    }
152    /// Set the `since` field to an Option value (optional)
153    pub fn maybe_since(mut self, value: Option<Datetime>) -> Self {
154        self._fields.2 = value;
155        self
156    }
157}
158
159impl<'a, S> GetSubscriptionUpdatesBuilder<'a, S>
160where
161    S: get_subscription_updates_state::State,
162{
163    /// Build the final struct
164    pub fn build(self) -> GetSubscriptionUpdates<'a> {
165        GetSubscriptionUpdates {
166            cursor: self._fields.0,
167            limit: self._fields.1,
168            since: self._fields.2,
169        }
170    }
171}