jacquard_api/sh_weaver/notification/
get_subscription_updates.rs1#[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 #[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
45pub 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
60pub 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 pub trait State: sealed::Sealed {}
83 pub struct Empty(());
85 impl sealed::Sealed for Empty {}
86 impl State for Empty {}
87 #[allow(non_camel_case_types)]
89 pub mod members {}
90}
91
92pub 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 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 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 pub fn cursor(mut self, value: impl Into<Option<CowStr<'a>>>) -> Self {
123 self._fields.0 = value.into();
124 self
125 }
126 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 pub fn limit(mut self, value: impl Into<Option<i64>>) -> Self {
136 self._fields.1 = value.into();
137 self
138 }
139 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 pub fn since(mut self, value: impl Into<Option<Datetime>>) -> Self {
149 self._fields.2 = value.into();
150 self
151 }
152 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 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}