1// @generated by jacquard-lexicon. DO NOT EDIT.
2//
3// Lexicon: app.bsky.feed.searchPosts
4//
5// This file was automatically generated from Lexicon schemas.
6// Any manual changes will be overwritten on the next regeneration.
7
8#[derive(
9 serde::Serialize,
10 serde::Deserialize,
11 Debug,
12 Clone,
13 PartialEq,
14 Eq,
15 bon::Builder
16)]
17#[builder(start_fn = new)]
18#[serde(rename_all = "camelCase")]
19pub struct SearchPosts<'a> {
20 #[serde(skip_serializing_if = "std::option::Option::is_none")]
21 #[serde(borrow)]
22 pub author: std::option::Option<jacquard_common::types::ident::AtIdentifier<'a>>,
23 #[serde(skip_serializing_if = "std::option::Option::is_none")]
24 #[serde(borrow)]
25 #[builder(into)]
26 pub cursor: std::option::Option<jacquard_common::CowStr<'a>>,
27 #[serde(skip_serializing_if = "std::option::Option::is_none")]
28 #[serde(borrow)]
29 #[builder(into)]
30 pub domain: std::option::Option<jacquard_common::CowStr<'a>>,
31 #[serde(skip_serializing_if = "std::option::Option::is_none")]
32 pub lang: std::option::Option<jacquard_common::types::string::Language>,
33 ///(default: 25, min: 1, max: 100)
34 #[serde(skip_serializing_if = "std::option::Option::is_none")]
35 pub limit: std::option::Option<i64>,
36 #[serde(skip_serializing_if = "std::option::Option::is_none")]
37 #[serde(borrow)]
38 pub mentions: std::option::Option<jacquard_common::types::ident::AtIdentifier<'a>>,
39 #[serde(borrow)]
40 #[builder(into)]
41 pub q: jacquard_common::CowStr<'a>,
42 #[serde(skip_serializing_if = "std::option::Option::is_none")]
43 #[serde(borrow)]
44 #[builder(into)]
45 pub since: std::option::Option<jacquard_common::CowStr<'a>>,
46 ///(default: "latest")
47 #[serde(skip_serializing_if = "std::option::Option::is_none")]
48 #[serde(borrow)]
49 #[builder(into)]
50 pub sort: std::option::Option<jacquard_common::CowStr<'a>>,
51 #[serde(skip_serializing_if = "std::option::Option::is_none")]
52 #[serde(borrow)]
53 pub tag: std::option::Option<Vec<jacquard_common::CowStr<'a>>>,
54 #[serde(skip_serializing_if = "std::option::Option::is_none")]
55 #[serde(borrow)]
56 #[builder(into)]
57 pub until: std::option::Option<jacquard_common::CowStr<'a>>,
58 #[serde(skip_serializing_if = "std::option::Option::is_none")]
59 #[serde(borrow)]
60 pub url: std::option::Option<jacquard_common::types::string::Uri<'a>>,
61}
62
63impl jacquard_common::IntoStatic for SearchPosts<'_> {
64 type Output = SearchPosts<'static>;
65 fn into_static(self) -> Self::Output {
66 SearchPosts {
67 author: self.author.into_static(),
68 cursor: self.cursor.into_static(),
69 domain: self.domain.into_static(),
70 lang: self.lang.into_static(),
71 limit: self.limit.into_static(),
72 mentions: self.mentions.into_static(),
73 q: self.q.into_static(),
74 since: self.since.into_static(),
75 sort: self.sort.into_static(),
76 tag: self.tag.into_static(),
77 until: self.until.into_static(),
78 url: self.url.into_static(),
79 }
80 }
81}
82
83#[jacquard_derive::lexicon]
84#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
85#[serde(rename_all = "camelCase")]
86pub struct SearchPostsOutput<'a> {
87 #[serde(skip_serializing_if = "std::option::Option::is_none")]
88 #[serde(borrow)]
89 pub cursor: std::option::Option<jacquard_common::CowStr<'a>>,
90 ///Count of search hits. Optional, may be rounded/truncated, and may not be possible to paginate through all hits.
91 #[serde(skip_serializing_if = "std::option::Option::is_none")]
92 pub hits_total: std::option::Option<i64>,
93 #[serde(borrow)]
94 pub posts: Vec<crate::app_bsky::feed::PostView<'a>>,
95}
96
97impl jacquard_common::IntoStatic for SearchPostsOutput<'_> {
98 type Output = SearchPostsOutput<'static>;
99 fn into_static(self) -> Self::Output {
100 SearchPostsOutput {
101 cursor: self.cursor.into_static(),
102 hits_total: self.hits_total.into_static(),
103 posts: self.posts.into_static(),
104 extra_data: self.extra_data.into_static(),
105 }
106 }
107}
108
109#[jacquard_derive::open_union]
110#[derive(
111 serde::Serialize,
112 serde::Deserialize,
113 Debug,
114 Clone,
115 PartialEq,
116 Eq,
117 thiserror::Error,
118 miette::Diagnostic
119)]
120#[serde(tag = "error", content = "message")]
121#[serde(bound(deserialize = "'de: 'a"))]
122pub enum SearchPostsError<'a> {
123 #[serde(rename = "BadQueryString")]
124 BadQueryString(std::option::Option<String>),
125}
126
127impl std::fmt::Display for SearchPostsError<'_> {
128 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
129 match self {
130 Self::BadQueryString(msg) => {
131 write!(f, "BadQueryString")?;
132 if let Some(msg) = msg {
133 write!(f, ": {}", msg)?;
134 }
135 Ok(())
136 }
137 Self::Unknown(err) => write!(f, "Unknown error: {:?}", err),
138 }
139 }
140}
141
142impl jacquard_common::IntoStatic for SearchPostsError<'_> {
143 type Output = SearchPostsError<'static>;
144 fn into_static(self) -> Self::Output {
145 match self {
146 SearchPostsError::BadQueryString(v) => {
147 SearchPostsError::BadQueryString(v.into_static())
148 }
149 SearchPostsError::Unknown(v) => SearchPostsError::Unknown(v.into_static()),
150 }
151 }
152}
153
154impl jacquard_common::types::xrpc::XrpcRequest for SearchPosts<'_> {
155 const NSID: &'static str = "app.bsky.feed.searchPosts";
156 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query;
157 const OUTPUT_ENCODING: &'static str = "application/json";
158 type Output<'de> = SearchPostsOutput<'de>;
159 type Err<'de> = SearchPostsError<'de>;
160}