atproto blogging
1// @generated by jacquard-lexicon. DO NOT EDIT.
2//
3// Lexicon: tools.ozone.safelink.queryEvents
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 Default
18)]
19#[serde(rename_all = "camelCase")]
20pub struct QueryEvents<'a> {
21 /// Cursor for pagination
22 #[serde(skip_serializing_if = "std::option::Option::is_none")]
23 #[serde(borrow)]
24 pub cursor: std::option::Option<jacquard_common::CowStr<'a>>,
25 /// Maximum number of results to return
26 #[serde(skip_serializing_if = "std::option::Option::is_none")]
27 pub limit: std::option::Option<i64>,
28 /// Filter by pattern type
29 #[serde(skip_serializing_if = "std::option::Option::is_none")]
30 #[serde(borrow)]
31 pub pattern_type: std::option::Option<jacquard_common::CowStr<'a>>,
32 /// Sort direction
33 #[serde(skip_serializing_if = "std::option::Option::is_none")]
34 #[serde(borrow)]
35 pub sort_direction: std::option::Option<QueryEventsSortDirection<'a>>,
36 /// Filter by specific URLs or domains
37 #[serde(skip_serializing_if = "std::option::Option::is_none")]
38 #[serde(borrow)]
39 pub urls: std::option::Option<Vec<jacquard_common::CowStr<'a>>>,
40}
41
42/// Sort direction
43#[derive(Debug, Clone, PartialEq, Eq, Hash)]
44pub enum QueryEventsSortDirection<'a> {
45 Asc,
46 Desc,
47 Other(jacquard_common::CowStr<'a>),
48}
49
50impl<'a> QueryEventsSortDirection<'a> {
51 pub fn as_str(&self) -> &str {
52 match self {
53 Self::Asc => "asc",
54 Self::Desc => "desc",
55 Self::Other(s) => s.as_ref(),
56 }
57 }
58}
59
60impl<'a> From<&'a str> for QueryEventsSortDirection<'a> {
61 fn from(s: &'a str) -> Self {
62 match s {
63 "asc" => Self::Asc,
64 "desc" => Self::Desc,
65 _ => Self::Other(jacquard_common::CowStr::from(s)),
66 }
67 }
68}
69
70impl<'a> From<String> for QueryEventsSortDirection<'a> {
71 fn from(s: String) -> Self {
72 match s.as_str() {
73 "asc" => Self::Asc,
74 "desc" => Self::Desc,
75 _ => Self::Other(jacquard_common::CowStr::from(s)),
76 }
77 }
78}
79
80impl<'a> core::fmt::Display for QueryEventsSortDirection<'a> {
81 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
82 write!(f, "{}", self.as_str())
83 }
84}
85
86impl<'a> AsRef<str> for QueryEventsSortDirection<'a> {
87 fn as_ref(&self) -> &str {
88 self.as_str()
89 }
90}
91
92impl<'a> serde::Serialize for QueryEventsSortDirection<'a> {
93 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
94 where
95 S: serde::Serializer,
96 {
97 serializer.serialize_str(self.as_str())
98 }
99}
100
101impl<'de, 'a> serde::Deserialize<'de> for QueryEventsSortDirection<'a>
102where
103 'de: 'a,
104{
105 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
106 where
107 D: serde::Deserializer<'de>,
108 {
109 let s = <&'de str>::deserialize(deserializer)?;
110 Ok(Self::from(s))
111 }
112}
113
114impl<'a> Default for QueryEventsSortDirection<'a> {
115 fn default() -> Self {
116 Self::Other(Default::default())
117 }
118}
119
120impl jacquard_common::IntoStatic for QueryEventsSortDirection<'_> {
121 type Output = QueryEventsSortDirection<'static>;
122 fn into_static(self) -> Self::Output {
123 match self {
124 QueryEventsSortDirection::Asc => QueryEventsSortDirection::Asc,
125 QueryEventsSortDirection::Desc => QueryEventsSortDirection::Desc,
126 QueryEventsSortDirection::Other(v) => {
127 QueryEventsSortDirection::Other(v.into_static())
128 }
129 }
130 }
131}
132
133#[jacquard_derive::lexicon]
134#[derive(
135 serde::Serialize,
136 serde::Deserialize,
137 Debug,
138 Clone,
139 PartialEq,
140 Eq,
141 jacquard_derive::IntoStatic
142)]
143#[serde(rename_all = "camelCase")]
144pub struct QueryEventsOutput<'a> {
145 /// Next cursor for pagination. Only present if there are more results.
146 #[serde(skip_serializing_if = "std::option::Option::is_none")]
147 #[serde(borrow)]
148 pub cursor: std::option::Option<jacquard_common::CowStr<'a>>,
149 #[serde(borrow)]
150 pub events: Vec<crate::tools_ozone::safelink::Event<'a>>,
151}
152
153/// Response type for
154///tools.ozone.safelink.queryEvents
155pub struct QueryEventsResponse;
156impl jacquard_common::xrpc::XrpcResp for QueryEventsResponse {
157 const NSID: &'static str = "tools.ozone.safelink.queryEvents";
158 const ENCODING: &'static str = "application/json";
159 type Output<'de> = QueryEventsOutput<'de>;
160 type Err<'de> = jacquard_common::xrpc::GenericError<'de>;
161}
162
163impl<'a> jacquard_common::xrpc::XrpcRequest for QueryEvents<'a> {
164 const NSID: &'static str = "tools.ozone.safelink.queryEvents";
165 const METHOD: jacquard_common::xrpc::XrpcMethod = jacquard_common::xrpc::XrpcMethod::Procedure(
166 "application/json",
167 );
168 type Response = QueryEventsResponse;
169}
170
171/// Endpoint type for
172///tools.ozone.safelink.queryEvents
173pub struct QueryEventsRequest;
174impl jacquard_common::xrpc::XrpcEndpoint for QueryEventsRequest {
175 const PATH: &'static str = "/xrpc/tools.ozone.safelink.queryEvents";
176 const METHOD: jacquard_common::xrpc::XrpcMethod = jacquard_common::xrpc::XrpcMethod::Procedure(
177 "application/json",
178 );
179 type Request<'de> = QueryEvents<'de>;
180 type Response = QueryEventsResponse;
181}